Hello Everyone, I'm running into an issue with the below hosts file script originally posted by Chewy. Has the Author as Matt Majewski back in 2009. Not sure if it was edited from the original creation date. The problem I'm running into is that it is not editing the hosts file it is just appending the line to the hosts file over and over again. It seems like it can't find the name when it searches the array. Does someone have a working script that allows you to edit an ip if it exists or add it if it doesn't? I have tried this on multiple computers all running Win7 Pro 64bit. Any help would greatly be appreciated. I'm sure I'm just missing something, but I can't seem to see it.
Func HostUpdate() ;EDIT IP TO THE IP ADDRESS OF YOUR SERVER YOU WANT MACHINES TO IMPORT TO $CitrixIP = "10.99.1.1" ;HOSTS file path $sFile = @WindowsDir & "\system32\Drivers\etc\hosts" ;used to define the index in the array when citrix.mydomain.com was found Dim $CitrixFind ;the array used to import the HOSTS file to Dim $aRecords ;Open the HOSTS file for reading into the array ;If Not _FileReadToArray(@SystemDir & "\Drivers\etc\hosts",$aRecords) Then If Not _FileReadToArray($sFile, $aRecords) Then MsgBox(4096,"Error", " Error reading log to Array error:" & @error) ;MsgBox(4096,"Error", $sFile) Exit EndIf ;searches the imported array to find the word "citrix.mydomain.com" ;then set the arrayindex it found it into $CitrixFind ;$CitrixFind = _ArraySearch ($aRecords, "citrix.mydomain.com", 0 , 0, 0, True) $CitrixFind = _ArraySearch ($aRecords, "citrix.mydomain.com") ;IF it found citrix.mydomain.com IF ($CitrixFind <> -1) Then ;change the array to include the new ip Number ;it changes the specific array index based on the earlier search $aRecords[$CitrixFind] = $CitrixIP & " citrix.mydomain.com" ;open the host file for editing ;the 2 parameter will erase the contents of the file $hFile = FileOpen($sFile, 2); 2 = erase ;write the array to the open File _FileWriteFromArray($hfile, $aRecords, 1) ;close the HOSTS file that was opened FileClose($hFile) ; did not find citrix.mydomain.com Else ;open the host file for editing ;the 1 parameter will append to the end of the file $hFile = FileOpen($sFile, 1); 1 = append ;write the new zen ip to the end of the file FileWriteLine($hFile, $CitrixIP & " citrix.mydomain.com") ;close the HOSTS file that was opened Fileclose($hFile) ;END IF found citrix.mydomain.com of not EndIf EndFunc
Here's a simple script that monitors what URL's have been blocked by the HostsFile.
; HostsFile Monitor ; Released: February 10, 2012 by ripdad ; Description: Monitors what URL's have been blocked by the HostsFile ; Opt('TrayAutoPause', 0) Opt('MustDeclareVars', 1) OnAutoItExitRegister('_Exit') ; TCPStartup() ; Local $a, $s, $t, $Socket, $Server = TCPListen('127.0.0.1', 80) ; Local $gui = GUICreate(' HostsFile Monitor', 400, 250, -1, -1, Default, 0x00000008); <-- Always on Top Local $hLv = GUICtrlCreateListView(" Blocked URL's| Date/Time", 5, 5, 390, 240) GUICtrlSendMsg($hLv, 0x101E, 0, 240) GUICtrlSendMsg($hLv, 0x101E, 1, 130) GUISetState(@SW_SHOW) ; While 1 Do $Socket = TCPAccept($Server) Until (GUIGetMsg() = -3) Or ($Socket <> -1) If $Socket = -1 Then Exit $s = TCPRecv($Socket, 256) $a = StringRegExp($s, '(?i)Host:(.*?)' & @CRLF, 3) If IsArray($a) Then $t = @MON & '-' & @MDAY & '-' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC GUICtrlCreateListViewItem($a & '|' & $t, $hLv) EndIf TCPCloseSocket($Socket) WEnd ; Func _Exit() TCPShutdown() GUIDelete($gui) MsgBox(0, ' HostsFile Monitor', 'Exit', 1) Exit EndFunc ;
Hi everyone !
I have a 1 question : " How can I open hosts file in windows with autoit code ? ". I tried by some other program but failed ! Help me plz ! Thank you !