-------------------------------------------------- -- * Be sure nmap, wget & grep are installed! * -- -------------------------------------------------- include GtkEngine.e include std/sequence.e constant win = create(GtkWindow) connect(win,"destroy",quit) set(win,"default size", 300,300) set(win,"title","Net Scan") set(win,"border width",5) set(win,"position",GTK_WIN_POS_CENTER) constant panel = create(GtkVBox) add(win,panel) constant lbl1 = create(GtkLabel) set(lbl1,"alignment",0,0) constant lbl2 = create(GtkLabel) set(lbl2,"alignment",0,0) constant hl = create(GtkHSeparator) pack(panel,{lbl1,hl,lbl2}) constant input = create(GtkEntry) set(input,"tooltip text","Enter your lan address range here") set(input,"text","192.168.2.1-32") constant btnbox = create(GtkHButtonBox) pack(panel,-btnbox) function GetMyIP() atom fn object list = "Computers on local network\n" object msg = "This computer\n" -- get lan address: if system_exec("ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}' > myip ",0) = 0 then fn = open("myip","r") msg &= sprintf("My local network address: %s",{gets(fn)}) set(lbl1,"markup",msg) close(fn) show(lbl1) else Warn(0,"Error","Unable to get IP address!") end if -- get wan address: if system_exec("wget -O - -q icanhazip.com > myip",2) = 0 then fn = open("myip","r") msg &= sprintf("My external IP: %s",{gets(fn)}) set(lbl1,"markup",msg) show(lbl1) close(fn) else Warn(0,"Sorry","No external IP") end if -- get other computers: if system_exec(sprintf("nmap -sP -n %s | grep Host > iplist",{get(input,"text")}),2) = 0 then fn = open("iplist","r") while 1 do msg = gets(fn) if atom(msg) then exit else msg = split(msg) list &= msg[2] & '\n' end if end while close(fn) set(lbl2,"markup",list) else Warn(0,"Sorry","Cannot find any computers","on this network") end if return 1 end function constant get_my_ip = call_back(routine_id("GetMyIP")) constant btn1 = create(GtkButton,"gtk-network") set(btn1,"tooltip text","Click to scan network") connect(btn1,"clicked",get_my_ip) constant btn2 = create(GtkButton,"gtk-quit") set(btn2,"tooltip text","Click to end this program") connect(btn2,"clicked",quit) add(btnbox,{input,btn1,btn2}) show_all(win) main()