Ajan Posted January 21, 2005 Share Posted January 21, 2005 Hello. I'm working on a small program atm which at some place uses _RUNDos function to run netstat - n > file.txt in the background. As you see netstat writes its content to a file called file.txt. The file usuallu looks like this TCP 83.22.50.162:1406 80.210.110.50:80 ESTABLISHED TCP 127.0.0.1:1042 127.0.0.1:1043 ESTABLISHED TCP 127.0.0.1:1043 127.0.0.1:1042 ESTABLISHED Now, I would like to find a host where I'm connected on specified port (let's say here 80) and take only the last octet of the host (here it would be 50). Seems like I should use StringSplit but doesn't it split strings according to only one delimiter? Here I should use a tabulation delimiter shouldn't I? Anyway I tried another option, I split the whole line using space as delimiter. It gave me an array with about 19 elements where one was "80.210.110.50:80". I had to split it again this time using dot "." as a delimiter which gave me an array where one of ements was "50:80" Then I did the same thing but this time with ":" and I got the thing I wanted. But that is a little bit complicated I guess, and for unknown reason sometimes doesn't work on other computers (error with elements of arrays). So is there any less complicated way to do it? I'd appreciate any help. Link to comment Share on other sites More sharing options...
scriptkitty Posted January 21, 2005 Share Posted January 21, 2005 (edited) I use stringSplit all the time, and it has it's limit to only use one character as a delimiter, but you can work around it. You could replace all the spaces with a single one, or a few other things. You can split by the : first and search for your port that way, but most things I am thinking you will be using a few stringsplits. One version to show what address a port is using.$x=ClipGet() for $i=1 to 5 $x=StringReplace($x," "," "); replace more than one space with a single one Next msgbox(1,"Clipboard shown",$x) $data=Stringsplit($x,":") $question=InputBox("What port?","Enter the port number","80") for $i=1 to $data[0] if StringInstr($data[$i],$question & " ")>0 then $address=StringTrimleft($data[$i-1],StringInStr($data[$i-1]," ")) msgbox(1,"IP address", $address) EndIf Next I thought if I show you a different approach it might help. here is one really different approach: $x=ClipGet() for $i=1 to 5 $x=StringReplace($x," ESTABLISHED","@"); replace more than one space with a single one Next msgbox(1,"Clipboard shown",$x); showing split $data=Stringsplit($x,"@") $question=":" & InputBox("What port?","Enter the port number","80") for $i=1 to $data[0] if Stringright($data[$i],Stringlen($question))=$question Then $data[$i]=StringTrimright($data[$i],Stringlen($question)) $t=Stringtrimleft($data[$i],Stringinstr($data[$i],".",0,-1)) msgbox(1,"Last part of IP",$t) EndIf Next This one uses stringinstring with a few trims. The main thing you need in any of the approches is to have consistant data. If using on more than one machine, get the netstat from each machine and make sure that the format is always the same. Edited January 21, 2005 by scriptkitty AutoIt3, the MACGYVER Pocket Knife for computers. Link to comment Share on other sites More sharing options...
Ajan Posted January 21, 2005 Author Share Posted January 21, 2005 Thanks a lot. This should really help, I've got to thing about it and understand it though . Anyway thanks again. 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