下载此文档

使用prarmiko模块切换root执行命令.docx


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
使用prarmiko模块切换root执行命令
Paramiko模块是非常优秀的ssh连接库。
,返回一个包含了代表标准输入、标准输出、标准错误的三个元素的元祖。通过操作这三个ChannelFile对象可以获取到命令的标准输出,以及命令的退出状态,并且如果命令没有执行完成,获取标注输出或退出状态时,进程将被阻塞,直到命令执行完成,还可以使用标准输入完成简单的交互操作,具体的使用方式,参见Paramiko使用
exec_command很方便,但也有不足之处,很多linux环境都是禁止root直接登录的,而使用exec_command无法完成su – root这种交互方式的切换命令,执行时进程将被永久阻塞。
invoke_shell方法,用于创建一个子shell进程,这样所有的操作都可以在该子shell中进程,su切换用户操作不受影响,但该方法没有exec_command那种方便的ChannelFile对象,所有的标准输出和标准错误内容通过invoke_shell返回对象的recv方法来获取,每一次调用recv只会从上一次返回的地方开始返回,也没有直接获取命令退出状态的方法,不过这些缺点可以通过代码来实现。
import paramiko
import time
def _shell_exec(shell, cmd, sleep, is_exec=True):
if is_exec:
#执行shell命令
out_list = _shell_exec(shell, 'su - root', 1)
last_str = out_list[len(out_list) - 1].strip()
#获取的linux系统的标准输出和标准错误按行分割后
#第一行内容为传递的linux命令,最后一行在无交互时,内容应该为PS1变量的值
#否则应该是交互的输出信息,切换root为交互操作,最后一行的内容应该为"Password:"
if not ('Password:'):
raise ValueError("Failed to exec su root")

out_list = _shell_exec(shell, 'huawei', 5)
result_str = out_list[len(out_list) - 2].strip()
#输入密码后,交互完成,此时最后一行应该为PS1变量的值
#单数第二行如何出现failure内容,则表示root密码输入错误,切换失败
if ('failure'):
raise ValueError("Authentication failure,please check root's password")
print('Successfully')
cmd_list = list()
#第一条命令是更改PS1变

使用prarmiko模块切换root执行命令 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人lu2yuwb
  • 文件大小1.42 MB
  • 时间2021-07-30