yum install python-devel -y && pip install paramiko
运行报错
AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'
找到 /usr/lib64/python2.6/site-packages/Crypto/Util/number.py
注释
#if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
)
#!/usr/bin/env python
#coding:utf-8
import paramiko
import sys
hostname = sys.argv[1]
username = 'root'
passwd = sys.argv[2]
paramiko.util.log_to_file('syslogin.log') # 发送 paramiko 日志到 syslogin.log 文件
#SSH
ssh=paramiko.SSHClient() # 创建一个 ssh 客户端 client 对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #自动添加主机名及主机密钥到本地HostKeys对象,
并将其保存,不依赖load_sys-tem_host_keys()的配置,即使~/.ssh/known_hosts不存在也不产生影响;
ssh.load_system_host_keys() # 获取客户端 host_keys ,默认 ~/.ssh/known_hosts ,非默认路径需指定
#密码方式连接
ssh.connect(hostname=hostname,username=username,password=passwd) # 创建 ssh 连接
#密钥key方式连接
privatekey = os.path.expanduser('~/.ssh/id_rsa') #定义私钥存放路径 返回用户家目录,/root.id_rse
key = paramiko.RSAKey.from_private_key_file(privatekey) #创建私钥对象
ssh.connect(hostname=hostname,username=username,pkey = key)
stdin,stdout,stderr=ssh.exec_command('free -m') # 调用远程执行命令方法 exec_command()
print stdout.read() # 打印命令执行结果,得到 Python 列表形式,可以使用 stdout.readlines()
ssh.close() # 关闭 ssh 连接
try:
#SFTP
t = paramiko.Transport((hostname,22))
t.connect(username=username, password=passwd)
sftp = paramiko.SFTPClient.from_transport(t)
localpath='/root/mylog.txt'
remotepath='/tmp/mylog.txt'
sftp.put(localpath,remotepath) #上传
sftp.get(remotepath, localpath) #下载
#SFTP其他方法
sftp.mkdir("/home/userdir",0755)
sftp.rmdir("/home/userdir")
sftp.rename("/home/test.sh","/home/testfile.sh")
sftp.stat("/home/testfile.sh")
sftp.listdir("/home")
t.close()
except Exception , e:
print str(e)