国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用Paramiko模塊編寫腳本進行遠程服務器操作

2020-01-04 17:29:24
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python使用Paramiko模塊編寫腳本進行遠程服務器操作的實例,通過Paramiko能夠方便地使用SSH服務,需要的朋友可以參考下
 

簡介:
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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通州市| 桃园市| 佛教| 岳阳县| 井冈山市| 潮州市| 普格县| 韶关市| 宽甸| 江都市| 都江堰市| 阿拉尔市| 唐海县| 敖汉旗| 邯郸市| 富平县| 扬州市| 三台县| 榆树市| 攀枝花市| 婺源县| 阿合奇县| 喀喇| 湘西| 容城县| 大田县| 罗源县| 莱芜市| 乐陵市| 尚志市| 泽州县| 苗栗县| 定远县| 平谷区| 乌鲁木齐县| 海伦市| 富平县| 湟源县| 合肥市| 榆社县| 丰宁|