paramiko 不通过密钥文件登陆,这很好解决,直接connect输入用户名和密码就ok
# -*- coding: utf-8 -*-
import paramiko
paramiko.util.log_to_file('paramiko.log') #记录日志文件
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1',username = 'root',password='******')
cmd = 'cd' #进入用户目录home
stdin,stdout,stderr = ssh.exec_command(cmd)
print stdout.readlines()
cmd = 'ls >test' #管道,ls命名的输出到文件test里面
stdin,stdout,stderr = ssh.exec_command(cmd)
print stdout.readlines()
cmd = 'cat test' # 显示test的内容,即ls命名的结果
stdin,stdout,stderr = ssh.exec_command(cmd)
#print stdout.readlines() #结果 汉字用的字符显示
在需要密匙文件时,paramiko 则需要通过如下方式登陆:
# -*- coding: utf-8 -*-
import paramiko
pkey='E:/wamp/www/tools/id_rsa' #本地密钥文件路径[此文件服务器上~/.ssh/id_rsa可下载到本地]
key=paramiko.RSAKey.from_private_key_file(pkey,password='******') #有解密密码时,
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #通过公共方式进行认证 (不需要在known_hosts 文件中存在)
#ssh.load_system_host_keys() #如通过known_hosts 方式进行认证可以用这个,如果known_hosts 文件未定义还需要定义 known_hosts
ssh.connect('127.0.0.1',username = 'root',password='******',pkey=key) #这里要 pkey passwordkey 密钥文件
stdin,stdout,stderr=ssh.exec_command('hostname')
print stdout.read()
stdin,stdout,stderr=ssh.exec_command('ls')
print stdout.read()
# -*- coding: utf-8 -*-
import paramiko
import os
pkey='E:/wamp/www/tools/id_rsa'
key=paramiko.RSAKey.from_private_key_file(pkey,password='******')
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1',username = 'root',password='******',pkey=key)
t = ssh.get_transport()
sftp=paramiko.SFTPClient.from_transport(t)
d = sftp.put("mm.txt","/home/www/mm.txt")
print d
t.close()
# -*- coding: utf-8 -*-
import paramiko
import os
pkey='E:/wamp/www/tools/id_rsa'
key=paramiko.RSAKey.from_private_key_file(pkey,password='******')
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1',username = 'root',password='******',pkey=key)
t = ssh.get_transport()
sftp=paramiko.SFTPClient.from_transport(t)
d = sftp.get("/home/www/mm.txt","mm.txt")
print d
t.close()