熬死你的 发表于 2018-8-9 11:34:39

python模块之paramiko学习<一>

  简介:
  
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.gz
  
cd pycrypto-2.5
  
python setup.py build
  
python setup.py install
  

  
tar zxvf paramiko-1.7.7.1.tar.gz
  
cd paramiko-1.7.7.1
  
python setup.py build
  
python setup.py install
  

  
python脚本简单编写:
  
管理单台服务器:
  
脚本一:查询172.16.22.23磁盘使用情况
  


[*]#!/usr/bin/python
[*]import paramiko
[*]hostname='172.16.22.23'
[*]port=22
[*]username='root'
[*]password='larryroot'
[*]if __name__==&quot;__main__&quot;:
[*]      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
[*]command = &quot; &quot;.join(sys.argv)
[*]port=22
[*]username='root'
[*]password='larryroot'
[*]if __name__==&quot;__main__&quot;:
[*]      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.pyip地址   命令
  
# python single1.py172.16.22.23 df -TH

  
Filesystem    Type    >  
/dev/sda2   ext3      13G   6.0G   5.7G52% /
  
/dev/sda1   ext3   104M    12M    87M13% /boot
  
tmpfs      tmpfs      61M      0    61M   0% /dev/shm
  
/dev/sda4   ext3   7.6G   465M   6.8G   7% /data
  
/dev/sdb1   ext3      32G   5.9G    25G20% /autocd
  

  
# python single1.py172.16.22.23 free -m
  
             total       used       free   shared    buffers   cached
  
Mem:         114      112          2          0         26         35
  
-/+ buffers/cache:         50         64
  
Swap:         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'))
[*]      password=str(line.split('\t')).strip()
[*]      print &quot;##########################&quot;,hostname,&quot;########################&quot;
[*]      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()
  

  用法:
  
# python ssh.py
  
############################ 172.16.22.22 ########################

  
Filesystem    Type   >  
/dev/sda2   ext3   12G5.6G5.3G52% /
  
/dev/sda1   ext3   99M   12M   83M13% /boot
  
tmpfs      tmpfs   58M   0   58M   0% /dev/shm
  
/dev/sda4   ext3    7.1G443M6.3G   7% /data
  
/dev/sdb1   ext3   30G5.5G   23G20% /autocd
  

  
############################ 172.16.22.23 ########################

  
Filesystem    Type   >  
/dev/sda2   ext3   15G2.6G   11G19% /
  
/dev/sda1   ext3   99M   12M   82M13% /boot
  
tmpfs      tmpfs   60M   0   60M   0% /dev/shm
  
/dev/sda4   ext3   33G377M   31G   2% /data
  
ip.list文件内容:
  
dx   172.16.22.22    22   root    larryroot
  
wt   172.16.22.23    22   root    larryroot
  脚本四:类似于脚本三,在所有远程服务器上执行相应命令
  


[*]#!/usr/bin/python
[*]#by larry
[*]#2011/01/30
[*]import paramiko
[*]import sys
[*]port=22
[*]username='root'
[*]command = &quot; &quot;.join(sys.argv)
[*]file=open('ip.list')
[*]for line in file:
[*]      hostname=str(line.split('\t'))
[*]      password=str(line.split('\t')).strip()
[*]      print &quot;##################&quot;,hostname,&quot;######################&quot;
[*]      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模块可以很方便的管理服务器,文件的上传下载后续会整理出来。
页: [1]
查看完整版本: python模块之paramiko学习<一>