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()