29
python入门简单的 c/s远程操作
source link: https://www.linuxprobe.com/python-c-s.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
实现目标:
通过控制端,可以实现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上。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK