为什么可以';帕拉米科不运行这个命令吗?(Python)

为什么可以';帕拉米科不运行这个命令吗?(Python),python,ssh,paramiko,Python,Ssh,Paramiko,我可以使用paramiko的exec_命令执行cat、grep和ls,但每当我试图修改文件时,它都不会执行任何操作。在此之前,我已经运行了su。文件与运行命令之前保持完全相同。这是因为您必须为每个exec_命令调用打开一个新通道。这将丢失su命令的身份验证,因为它与特定通道关联 你有两个选择 使用sudo运行命令,这在paramiko上可能不可能 以root用户身份登录,这不一定是个好主意 在通道上使用invoke_shell(),然后通过std in向shell发送命令 选项3允许与param

我可以使用paramiko的exec_命令执行
cat
grep
ls
,但每当我试图修改文件时,它都不会执行任何操作。在此之前,我已经运行了
su
。文件与运行命令之前保持完全相同。

这是因为您必须为每个exec_命令调用打开一个新通道。这将丢失su命令的身份验证,因为它与特定通道关联

你有两个选择

  • 使用sudo运行命令,这在paramiko上可能不可能
  • 以root用户身份登录,这不一定是个好主意
  • 在通道上使用invoke_shell(),然后通过std in向shell发送命令
  • 选项3允许与paramiko交互使用ssh,保持状态信息完整。这就是su命令所需要的。它还允许您在shell连接周围创建一个pexpect类型的包装器,观察stdout管道是否指示事情已经完成,并且您可以通过stdin发送其他命令。在读取数据之前,请注意管道是否堵塞

    echo Something=Something > file