added output from watershell and made little cli for it
This commit is contained in:
58
watershell-cli.py
Normal file
58
watershell-cli.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import socket, time, sys
|
||||
|
||||
|
||||
def recv_timeout(the_socket,timeout=2):
|
||||
#make socket non blocking
|
||||
the_socket.setblocking(0)
|
||||
|
||||
#total data partwise in an array
|
||||
total_data=[];
|
||||
data='';
|
||||
|
||||
#beginning time
|
||||
begin=time.time()
|
||||
while 1:
|
||||
#if you got some data, then break after timeout
|
||||
if total_data and time.time()-begin > timeout:
|
||||
break
|
||||
|
||||
#if you got no data at all, wait a little longer, twice the timeout
|
||||
elif time.time()-begin > timeout*2:
|
||||
break
|
||||
|
||||
#recv something
|
||||
try:
|
||||
data = the_socket.recv(8192)
|
||||
if data:
|
||||
total_data.append(data.decode())
|
||||
#change the beginning time for measurement
|
||||
begin=time.time()
|
||||
else:
|
||||
#sleep for sometime to indicate a gap
|
||||
time.sleep(0.1)
|
||||
except:
|
||||
pass
|
||||
|
||||
#join all parts to make final string
|
||||
return ''.join(total_data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.bind(("", 53316))
|
||||
box = (sys.argv[1], int(sys.argv[2]))
|
||||
print("Connecting to Watershell on {}...".format(box))
|
||||
s.sendto(b'status:', box)
|
||||
resp = recv_timeout(s, 1)
|
||||
if resp == "up":
|
||||
print("Connected!")
|
||||
else:
|
||||
print("Connection Failed...")
|
||||
sys.exit(1)
|
||||
while True:
|
||||
cmd = input("//\\\\watershell//\\\\>> ")
|
||||
if cmd == 'exit':
|
||||
break
|
||||
if len(cmd) > 1:
|
||||
s.sendto(("run:"+cmd).encode(), box)
|
||||
resp = recv_timeout(s, 2)
|
||||
print(resp)
|
||||
Reference in New Issue
Block a user