Python实现多种SSH连接与文件传输

Python实现SSH控制

使用Python进行基于口令认证的连接:

 1 #加载paramiko包
 2 import paramiko
 3 #创建新的SSH对象
 4 Client=paramiko.SSHClient()
 5 #允许以自动的方式连接不在Host表中的主机
 6 Client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 7 #连接到主机
 8 Client.connect(hostname="172.16.74.133",port=22,username="kali",password="kali")
 9 #执行命令并输入
10 while True:
11     STr1 = input("请输入命令:")
12     stdin,stout,stderr=Client.exec_command(STr1)
13     print(stout.read().decode())
 

使用Python进行基于密钥认证的连接:

 1 #加载paramiko包
 2 import paramiko
 3 #设置私钥所在路径
 4 private_key_path="./id_usa"
 5 #加载私钥
 6 key_pri=paramiko.RSAKey.from_private_key_file(private_key_path,password="wang")
 7 #创建新的SSH连接实例
 8 Client=paramiko.SSHClient()
 9 #允许不在konw_hosts文件中的主机
10 Client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
11 Client.connect(hostname="172.16.74.133",port=22,username="root",pkey=key_pri)
12 while True:
13     Some=input("Input:")
14     stdin,stdout,stderr=Client.exec_command(Some)
15     print(stdout.read().decode())

使用SFTP函数实现从服务器上下载和传输文件:

思路:

1.创建transport实例,并通过SSH连接

2.通过transport实例继而创建stfp对象,然后使用sftp对象的put和get方法进行文件传输

 1 #加载paramiko模块
 2 import paramiko
 3 #创建Transport实例
 4 trans=paramiko.Transport("172.16.74.133",22)
 5 #设置私钥路径
 6 key_path="./id_usa"
 7 #加载私钥
 8 key=paramiko.RSAKey.from_private_key_file(key_path,password="wang")
 9 #进行认证连接登录
10 trans.connect(username="root",pkey=key)
11 #创建sftp对象
12 sftp=paramiko.SFTPClient.from_transport(trans)
13 #上传文件
14 sftp.put("./id_rsa",'/etc/haha')
15 #下载文件
16 sftp.get("/etc/passwd","./passwd")

总结:使用Python的paramiko库可以实现对Linux系统是SSH连接操作并执行任意命令与文件下载,通过此次操作,熟悉了Python对Linux的连接与密钥认证方式。

 



上一篇:运维少年系列 python and cisco (3)


下一篇:系统无法启动,单用户模式下mount -o remount,rw / 修改fstab