EvoBora Posted August 20, 2015 Share Posted August 20, 2015 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.Thank Youexpandcollapse popupFunc 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 Link to comment Share on other sites More sharing options...
BrewManNH Posted August 20, 2015 Share Posted August 20, 2015 Try changing your _ArraySearch line to this:$CitrixFind = _ArraySearch($aRecords, "citrix.mydomain.com", 0, 0, 0, 1)You're trying to do a partial string search without specifying to the function you are. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
guinness Posted August 20, 2015 Share Posted August 20, 2015 By the way there is a regular expression for HOSTS parsing. Search my username and HOSTS on the forum. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
EvoBora Posted August 21, 2015 Author Share Posted August 21, 2015 Thank you for your replys... Try changing your _ArraySearch line to this:$CitrixFind = _ArraySearch($aRecords, "citrix.mydomain.com", 0, 0, 0, 1)You're trying to do a partial string search without specifying to the function you are.I added that line in and same results. I did try that and commented out but had a True instead of a 1 so I'm glad I understand that piece now. Still not sure why it isn't searching the array correctly.By the way there is a regular expression for HOSTS parsing. Search my username and HOSTS on the forum.I did a search and came up with 22 results. Did read them all but they are well over my head. I've been using Autoit for over a year and I think I've only tapped into 1% of its potential. Any other suggestions would be great. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now