簡介:
paramiko是python(2.2或更高)的模塊,遵循SSH2協議實現了安全(加密和認證)連接遠程機器。
安裝所需軟件包:
http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.5.tar.gz
http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
tar zxvf pycrypto-2.5.tar.gzcd pycrypto-2.5python setup.py buildpython setup.py installtar zxvf paramiko-1.7.7.1.tar.gzcd paramiko-1.7.7.1python setup.py buildpython setup.py install
腳本簡單編寫:
管理單臺服務器:
腳本一:查詢172.16.22.23磁盤使用情況
#!/usr/bin/python import paramiko hostname="172.16.22.23" port=22 username="root" password="larryroot" if __name__=="__main__": s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname,port,username,password) stdin,stdout,sterr=s.exec_command("df -Th") print stdout.read() s.close()
腳本二:在遠程服務器上執行相應命令
#!/usr/bin/python #by larry #2011/01/30 import sys import paramiko hostname=sys.argv[1] command = " ".join(sys.argv[2:]) port=22 username="root" password="larryroot" if __name__=="__main__": s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname,port,username,password) stdin,stdout,sterr=s.exec_command(command) print stdout.read() s.close()
使用方法:
python single1.py ip地址 命令[root@localhost ~]# python single1.py 172.16.22.23 df -TH
Filesystem Type Size Used Avail Use% Mounted on/dev/sda2 ext3 13G 6.0G 5.7G 52% //dev/sda1 ext3 104M 12M 87M 13% /boottmpfs tmpfs 61M 0 61M 0% /dev/shm/dev/sda4 ext3 7.6G 465M 6.8G 7% /data/dev/sdb1 ext3 32G 5.9G 25G 20% /autocd[root@localhost ~]# python single1.py 172.16.22.23 free -mtotal used free shared buffers cachedMem: 114 112 2 0 26 35-/+ buffers/cache: 50 64Swap: 1027 0 1027
腳本三:管理多臺服務器:批量查詢ip列表中對應服務器的磁盤使用情況
#!/usr/bin/python #by larry #2011/01/30 import paramiko port=22 username="root" file=open("ip.list") for line in file: hostname=str(line.split("/t")[1]) password=str(line.split("/t")[4]).strip() print "##########################",hostname,"########################" s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname,port,username,password) stdin,stdout,sterr=s.exec_command("df -Th") print stdout.read() s.close() file.close() 用法:
[root@localhost ~]# python ssh.py
############################ 172.16.22.22 ########################Filesystem Type Size Used Avail Use% Mounted on/dev/sda2 ext3 12G 5.6G 5.3G 52% //dev/sda1 ext3 99M 12M 83M 13% /boottmpfs tmpfs 58M 0 58M 0% /dev/shm/dev/sda4 ext3 7.1G 443M 6.3G 7% /data/dev/sdb1 ext3 30G 5.5G 23G 20% /autocd############################ 172.16.22.23 ########################Filesystem Type Size Used Avail Use% Mounted on/dev/sda2 ext3 15G 2.6G 11G 19% //dev/sda1 ext3 99M 12M 82M 13% /boottmpfs tmpfs 60M 0 60M 0% /dev/shm/dev/sda4 ext3 33G 377M 31G 2% /data
ip.list文件內容:
dx 172.16.22.22 22 root larryrootwt 172.16.22.23 22 root larryroot
腳本四:類似于腳本二,在所有遠程服務器上執行相應命令
#!/usr/bin/python #by larry #2011/01/30 import paramiko import sys port=22 username="root" command = " ".join(sys.argv[1:]) file=open("ip.list") for line in file: hostname=str(line.split("/t")[1]) password=str(line.split("/t")[4]).strip() print "##################",hostname,"######################" s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname,port,username,password) stdin,stdout,sterr=s.exec_command(command) print stdout.read() s.close() file.close()
用法:
python ssh.py 命令
簡單整理到這里通過python的paramiko模塊可以很方便的管理服務器,文件的上傳下載后續會整理出來。
SSH
下面是通過ssh的dsa或rsa公鑰驗證批量登錄服務器執行命令:
#!/usr/bin/python #2012/02/02 by larry import paramiko import sys,os port=22 username="larry" key_file="~/.ssh/authorized_keys" know_host="/home/larry/.ssh/known_hosts" command=" ".join(sys.argv[1:]) ####獲取命令行參數 file=open("ip.list") for line in file: hostname=str(line.split(" ")[1]) ####截取ip字段 print "#####################################",hostname,"###############################################" s=paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.load_system_host_keys(know_host) s.connect(hostname,port,username,key_file) stdin,stdout,sterr=s.exec_command(command) print stdout.read().strip() s.close() file.close()
執行python腳本:
python sshkey.py df -h
################172.16.22.22########################Filesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol0014G 3.5G 9.7G 27% //dev/mapper/VolGroup00-data116G 47G 64G 43% /data/dev/cciss/c0d0p1 99M 13M 82M 14% /boottmpfs 5.9G 0 5.9G 0% /dev/shm



















