paramiko模块
安装paramiko模块
本地安装
#yum install -y gcc gcc-c++ python-devel
#tar xzf paramiko-1.15.4.tar.gz
#python setup.py install
网络安装
#pip install paramiko
基础使用介绍
SSHClient
- 创建用于连接ssh服务器的实例
>>> ssh = paramiko.SSHClient()
- paramiko.AutoAddPolicy
设置自动添加主机密钥 - ssh.connect
连接ssh服务器 - ssh.exec_comand
在ssh服务器上执行指定命令
paramiko实例
编写用于实现ssh访问的脚本
- 创建SSHClient实例
- 设置添加主机密钥策略
- 连接ssh服务器
- 执行指定命令
- 在shell命令行中接受用于连接远程服务器的密码以及在远程主机上执行的命令
import paramiko
import sys
import getpass
import threading
import os
def rcmd(host, user='root', passwd=None, port=22, command=None):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=passwd, port=port)
stdin, stdout, stderr = ssh.exec_command(command)
out = stdout.read()
err = stderr.read()
if out:
print('[\033[34;1m%s\033[0m] \033[32;1mOUT\033[0m:\n%s' % (host, out.decode()))
if err:
print('[\033[34;1m%s\033[0m] \033[31;1mERROR\033[0m:\n%s' % (host, err.decode()))
ssh.close()
if __name__ == '__main__':
if len(sys.argv) != 3:
print('Usage: %s ipfile "command"' % sys.argv[0])
exit(1)
if not os.path.isfile(sys.argv[1]):
print('No such file: %s' % sys.argv[1])
exit(2)
ipfile = sys.argv[1]
command = sys.argv[2]
passwd = getpass.getpass()
with open(ipfile) as fobj:
for line in fobj:
ip = line.strip() # 去除行尾的\n,得到IP地址
t = threading.Thread(target=rcmd, args=(ip,), kwargs={'passwd': passwd, 'command': command})
t.start() # rcmd(*args, **kwargs)
# rcmd(ip, passwd=passwd, command=command)