c/s模式遠程有點像服務器與客戶端一樣的,我們下面利用python來做一個簡單的例子,有興趣的和小編來學學.
實現目標:通過控制端,可以實現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)
- //Vevb.com
- 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 //Vevb.com
- RX bytes:87223 (85.1 KiB) TX bytes:69993 (68.3 KiB
新聞熱點
疑難解答