简单的python c/s远程操作

2015年3月12日 发表评论 阅读评论

实现目标

通过控制端,可以实现N台主机执行同一操作。

具体代码如下

1、控制端代码

[root@361way tmp]# vim client.py
#!/usr/bin/env python
import socket,os,sys
  ost=sys.argv[1]
▽ort=4567
for host in os.popen('cat ip.list').readlines():
  print host
  s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  s.connect((host,port))
  while 1:
    data=sys.argv[2]
    if not data:
        break
    s.sendall(data)
    data=s.recv(1024)
    if not data:
        break
    print data
  s.close()                  

2、被控制端代码

[root@localhost tmp]# vim server.py
#!/usr/bin/env python
import socket,os
host=''
port=4567
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)
print "Server is running on port %d; press ctrl-c to terminate." % port
while 1:
    clientsock,clientaddr=s.accept()
    print "connect from %s" % str(clientaddr)
    clientfile=clientsock.makefile('rw',0)
    data=clientsock.recv(1024)
    command=os.popen(data).read()
    clientfile.write("%s" % command)
    clientfile.close()
    clientsock.close()

3、操作方法

ip.list里写server端的IP地址,每行一个,如:

1.1.1.1
2.2.2.2

使用方法,将server.py部署于目标主机上,执行server.py;客户端执行
python client.py ip.list "command"即可。示例如下:

[root@361way tmp]# python client.py ip.list ifconfig
192.168.0.106
eth0      Link encap:Ethernet  HWaddr 52:54:00:D8:F3:E7
          inet addr:192.168.0.106  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fed8:f3e7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:627 errors:0 dropped:0 overruns:0 frame:0
          TX packets:262 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:71041 (69.3 Kb)  TX bytes:55281 (53.9 Kb)
192.168.0.110
eth0      Link encap:Ethernet  HWaddr 52:54:00:D7:F8:E7
          inet addr:192.168.0.110  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fed7:f8e7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:770 errors:0 dropped:0 overruns:0 frame:0
          TX packets:438 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:87223 (85.1 KiB)  TX bytes:69993 (68.3 KiB)

代码已放到github上




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.