python3.x Day6 paramiko

python3 paramiko模块,用来进行远程操作linux服务器,利用的就是ssh

#利用用户名,密码,进行连接
import paramiko

#创建一个SSH对象
ssh=paramiko.SSHClient()

#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#连接一个主机
ssh.connect(hostname='192.168.1.2',port=22,username='root',password='root123')



#执行命令
stdin,stdout,stderr=ssh.exec_command('df -h')

#获取执行结果
result_right=stdout.read().decode("utf-8")
result_error=stderr.read().decode("utf-8")

print("result_right:%s"%result_right)
print("result_error:%s"%result_error)

#关闭连接
ssh.close()
#利用私钥,进行连接

import paramiko

#生成ssh实例
ssh=paramiko.SSHClient()

#配置私钥,自己有个身份
pk=paramiko.RSAKey.from_private_key_file(filename="ip2_rsa_key")

#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#连接信息,pkey就是目标服务器的私钥,要求对方服务器有自己对应的公钥
ssh.connect(hostname="192.168.1.8",port=22,username='root',pkey=pk)


#执行命令
stdin,stdout,stderr=ssh.exec_command("df -h;ifconfig")
res=stdout.read()

print(res.decode("utf-8"))

ssh.close()

利用paramiko,实现scp的文件上传下载

import paramiko

#创建scp的连接通道
scp_tran=paramiko.Transport(("192.168.1.2",22))
scp_tran.connect(username='root',password='root123')

#把连接通道给SFTPClient,生成一个scp实例
scp=paramiko.SFTPClient.from_transport(scp_tran)

#上传文件
scp.put("E:\\python学习51cto\\wy_home_temp\\temp.txt","/root/temp.txt")

#下载文件
scp.get("/root/temp.txt","E:\\python学习51cto\\temp.txt")

#关闭连接
scp_tran.close()
#这是利用私钥进行的连接

import paramiko

#创建sftp的transport连接
scp_tran=paramiko.Transport(("192.168.1.8",22))

#定义python程序的一个私钥,与目标服务器的公钥匹配的,其实是把当前python的私钥公钥对中的公钥扔给服务器以后就匹配了
pk=paramiko.RSAKey.from_private_key_file("ip2_rsa_key")

#开启transport连接,建链
scp_tran.connect(username="root",pkey=pk)

#弄一个sftp客户端出来,进行具体的文件传输
scp=paramiko.SFTPClient.from_transport(scp_tran)

#上传文件
scp.put(localpath="ssh_pkey.py",remotepath="/root/ssh_pkey.py")

#下载文件
scp.get(remotepath="/root/ssh_pkey.py",localpath="E:\\python学习51cto\\ttttttt")

#关闭连接
scp_tran.close()

 

posted @ 2017-12-20 14:46  王玥  阅读(231)  评论(0编辑  收藏  举报