29

python入门简单的 c/s远程操作

 5 years ago
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上


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK