####server ####
#!/usr/local/bin/python2.4
import os
import sys
import
signal
from subprocess import *
from socket import
*
ip=''
port=10000
def issyscommand(command):
ret=
command.find('ls')
if ret ==
-1:
return 0
else:
return 1
sock=socket(AF_INET,SOCK_STREAM)
sock.setsockopt(SOL_SOCKET,SO_REUSEADDR,1);
sock.bind((ip,port))
print
'ip : %s' % (ip)
print 'port : %s' %
(port)
sock.listen(5)
signal.signal(signal.SIGCHLD,
signal.SIG_IGN)
while 1:
conn,
addr=sock.accept()
pid=os.fork()
if
pid:
print "close parent
process"
else:
while
1:
conn.settimeout(5)
command=conn.recv(4096)
if
command:
break;
print
command
if
issyscommand(command):
dir=os.path.dirname(command)
file=os.path.basename(command)
os.chdir(dir)
try:
p=Popen(file,shell=True,stdout=PIPE)
except:
print "cannot execute
command"
else:
conn.settimeout(3)
conn.send(p.stdout.read())
conn.close()
sys.exit()
else:
try:
print
command
p=Popen(command,shell=True,stdout=PIPE)
except:
print "cannot execute
command"
else:
conn.settimeout(3)
conn.send(p.stdout.read())
conn.close()
sys.exit()
###client####
#!/usr/local/bin/python2.4
from socket import *
tstr="input command =>"
port=10000
while 1:
print tstr;
query=raw_input();
fp=open('ip.list','r')
for ips in
fp:
if ips[0] == '#'
:
continue;
if ips[0] == '0'
:
break;
clientsock =
socket(AF_INET,SOCK_STREAM);
ip=ips[:-1]
print 'ip
: %s' % (ip[:-1]);
print 'port :
%s' % (port);
clientsock.connect((ip,port));
clientsock.send(query);
try:
clientsock.settimeout(2)
result = clientsock.recv(4096);
except:
print 'cannt
recv'
clientsock.close();
else:
print
result;
clientsock.close();
fp.close()