提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
python的paramiko库一些常用操作
一、paramiko交互
通过window下python里的paramiko连接ubuntu终端
二、使用步骤
1.引入库
代码如下(示例):
import paramiko
2.操作
第一种方法:
代码如下(示例):
# 创建一个SSH客户端对象
ssh = paramiko.SSHClient()
# 设置访问策略(设置丢失主机key)时的策略为自动添加
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 与远程主机进行连接
ssh.connect("ip地址",22,"用户名","密码")
# 发送终端指令,这里的指令和在ubuntu终端指令一致
cmd = 'ls'
# 接收到返回值(会接收到三种返回值分别是:标准输入、标准输出、错误输出)
stdin,stdout,sdterr = ssh.exec_command(cmd)
out = stdout.read()
print(out)
返回的stdin(标准输入)用法一般是用来和终端交互,但是在项目实践过程中,操作终端进入超管权限,需要输入管理员密码,利用stdin.write("123456"+'\n')无法实现
第二种方法:
s=paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect("ip",22,"username","pwd")
if username != 'root':
ssh = s.invoke_shell()
time.sleep(0.1)
ssh.send("sudo su \n")
buff = ''
# 下面的ap是我终端的username
while not buff.endswith('password for ap: '):
resp = ssh.recv(9999)
buff +=resp.decode('gbk')
# 123456是ap管理员的密码
ssh.send("123456\n")
ssh.send("whoami"+'\n')
# 即可登录到超管权限,输出"root"
总结
使用以上两种方法都可以使用python来和虚拟机终端交互,若终端是Centos系统,使用第一种方法,username传入root,即可直接进入超管权限,但是Ubuntu系统不可以,需要使用第二种方法使用send()来输入超管密码登录到超管权限。