为什么paramiko无法运行此命令?(Python)

1 投票
1 回答
1324 浏览
提问于 2025-04-16 19:07
echo Something=Something > file

我可以用paramiko的exec_command来执行一些命令,比如cat(查看文件内容)、grep(搜索文件中的特定内容)和ls(列出文件和文件夹),但是每次我尝试修改一个文件时,它都没有任何反应。我在这之前已经运行过su命令(切换用户)。结果是文件和之前一模一样,没有任何变化。

1 个回答

2

这是因为每次调用exec_command时,你都需要打开一个新的通道。这样会导致su命令的认证失效,因为它是和特定的通道关联的。

你有几个选择。

  1. 用sudo来运行命令,但这在使用paramiko时可能不太可行。
  2. 以root身份登录,但这并不一定是个好主意。
  3. 在你的通道上使用invoke_shell(),然后通过标准输入向这个shell发送命令。

第三个选项允许你在使用paramiko时进行交互式的ssh操作,保持状态信息不变。这正是你执行su命令所需要的。它还允许你在shell连接周围创建一个类似pexpect的包装器,监视标准输出管道,以便知道何时完成,然后你可以通过标准输入发送额外的命令。只要注意管道可能会填满,导致阻塞,直到你读取数据。

撰写回答