# -*- coding: utf-8 -*-
import paramiko
hostname='192.168.76.10'
username='root'
password='123456'
paramiko.util.log_to_file('syslogin.log')
ssh=paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.76.10', port=22, username=username, password=password)
stdin,stdout,stderr=ssh.exec_command('free -m')
print stdout.read()
stdin,stdout,stderr=ssh.exec_command('df -h')
print stdout.read()
ssh.close()
set_missing_host_key_policy方法,是制定连接远程主机没有本地密钥或HostKeys对象是的策略,有三种策略:
1、AutoAddPolicy,自动添加主机名及主机密钥到本地HostKeys对象,并保存,不依赖load_system_host_keys()的配置,即使~/.ssh/known_hosts不存在也不产生影响。
2、WarningPolicy,用于记录一个未知的主机密钥的python警告,并接受它,功能上与AutoAddPolicy相似,但未知主机会有告警
3、RejectPolicy,自动拒绝不知的主机名和密钥,依赖 load_system_host_keys()的配置
import paramiko
name='root'
pw='123456'
hname='192.168.76.10'
port=22
try:
t = paramiko.Transport((hname, port))
t.connect(username=name, password=pw)
sftp = paramiko.SFTPClient.from_transport(t)
#上传和下载一定是文件路径的格式,不能是目录,不然会报错
sftp.put('d:jobinformation.txt', '/tmp/in.txt', confirm=True)
sftp.get('/tmp/d.html', 'd:/job/d.html')
sftp.mkdir('/tmp/xuebo')
sftp.rmdir(('/tmp/t'))
sftp.rename('/tmp/t1', '/tmp/t11.sh')
print sftp.stat('/tmp/in.txt')
print sftp.listdir('/tmp')
t.close()
except Exception, e:
print str(e)