paramiko的get_pty=True参数

博客讨论了使用Paramiko在远程服务器上执行sudo命令和多条语句的注意事项。当普通用户需要管理员权限时,需判断是否具备sudo权限,或者通过su切换到root并提供密码。使用get_pty=True可以模拟TTY执行sudo,但可能导致长运行进程随SSH退出而终止。解决方法是修改sudoers配置文件或避免使用get_pty。同时,普通用户可能无法直接执行service命令,建议调整sudoers配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

paramiko 执行多条语句或执行sudo命令时,须要在exec_command加上get_pty=True。
在远程执行某些命令时,可能需要管理员权限,这种时候需要做一些判断,首先判断登录提供的用户名如果不是root,则需要对命令做一些修改。这里的修改有两种情况,一是,该普通用户本身就有sudo权限,只需要把执行的命令加到sudo之后执行就可以,还有一种是普通用户没有sudo权限,需要通过su先切换到root身份之后再执行,这种情况下需要提供root密码。

还有一点要注意的是get_pty这个参数,实际在远程执行sudo命令时,一般主机都会需要通过tty才能执行,通过把get_pty值设置为True,可以模拟tty,但是随之而来也会有一个问题,如果是远程执行一个需要长期运行的进程,例如启动nginx服务,当远程命令执行后SSH退出之后,此次运行的所有程序也会随之结束**,所以在需要通过远程命令运行某些服务或程序时,是不能指定get_pty参数的;**但同时,如果是普通用户远程登录,是没有权限执行service命令的。建议的一种方式是修改/etc/sudoers配置文件,注释掉Defaults requiretty这行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值