获得;必须从终端运行;在Python中使用Paramiko模块切换到root用户时
我正试图通过Python脚本自动化一项任务。其想法是以普通用户身份登录,然后发送获得;必须从终端运行;在Python中使用Paramiko模块切换到root用户时,python,ssh,sudo,paramiko,su,Python,Ssh,Sudo,Paramiko,Su,我正试图通过Python脚本自动化一项任务。其想法是以普通用户身份登录,然后发送su命令并切换到root帐户 我不能以root用户身份直接登录的原因是SSHD不允许root用户登录 以下是我所拥有的: ip='192.168.105.8' port=22 username='xyz' password='abc' ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.conne
su
命令并切换到root帐户
我不能以root用户身份直接登录的原因是SSHD
不允许root用户登录
以下是我所拥有的:
ip='192.168.105.8'
port=22
username='xyz'
password='abc'
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)
print ("SSH connection established")
stdin,stdout,stderr=ssh.exec_command('sudo fast.sh')
outlines=stdout.readlines()
outlines+=stderr.readlines()
resp=''.join(outlines)
print(resp)
现在,我想发送su
命令并回显根密码。我知道这不是一个好的做法,但我需要一个快速和简单的方法来测试这一点,所以我同意
然而,当我这样做的时候
stdin,stdout,stderr=ssh.exec_命令('su')
并提供密码,我得到一个错误
苏:必须从终点站运行
有人能帮我解决这个问题吗
我正在Windows笔记本电脑上运行Python脚本,将ssh连接到Linux设备,然后使用su
命令切换到root
用户,并回显密码,以便我可以作为root用户运行其他命令
谢谢。首先,您知道,自动化
su
或sudo
不是正确的解决方案
正确的解决方案是只使用任务所需的权限设置专用私钥。另见
无论如何,您的命令都会失败,因为
sudo
配置为需要一个带有requirety
选项的交互式终端(作为阻止其自动化的一种方式)
默认情况下,Paramiko(正确)不会为exec
通道分配伪终端
或者删除requirety
选项
如果无法删除,可以使用以下参数的get_pty
强制Paramiko分配伪终端:
但这不是一个好的选择,因为它会给你带来很多严重的副作用。伪终端用于交互使用,而不是自动执行命令。有关一些示例,请参见
ssh.exec_command('sudo fast.sh', get_pty=True)