echo Something=Something > file
我可以使用 paramiko 的 exec_command 来执行cat
, grep
and ls
,但是每当我尝试修改文件时它什么都不做。在这之前我已经跑su
了。该文件与运行该命令之前的文件完全相同。
这是因为您必须为每个 exec_command 调用打开一个新通道。这会丢失 su 命令的身份验证,因为它与特定通道相关联。
你有几个选择。
选项 3 允许将 ssh 与 paramiko 交互使用,保持状态信息完整。这就是 su 命令所需要的。它还允许你围绕你的 shell 连接创建一个 pexpect 类型的包装器,观察标准输出管道以了解事情已经完成的迹象,你可以通过标准输入发送额外的命令。在您读取数据之前,请注意管道填充和阻塞。