0

我对 paramiko 有一个小问题。似乎所有命令都不像手动 ssh 会话那样执行。

让我们关注“历史”shell 命令,即使我主要关心的是这个命令:

$ python /home/metrosim/src/urbansim/tools/make_indicators.py \
-x /home/metrosim/project_configs/paris_zone_ovh_km130110.xml \
-c /home/metrosim/data/paris_zone/base_year_data_a \
-i trip_generation -y [1999]

两者都使用手动 ssh 会话,但不是使用 paramiko,而是使用类似ls -lAwork 的简单命令。

这是我的代码:

stdin, stdout, stderr = ssh_client.exec_command('history')

print 'LINES : '
data = stdout.read().splitlines()
for line in data:
     print line
4

1 回答 1

0

如果要模拟 shell 会话,请尝试使用invoke_shell()而不是exec_command().

invoke_shell文档:

在此频道上请求交互式 shell 会话。如果服务器允许,则通道将直接连接到 shell 的 stdin、stdout 和 stderr。

通常你会在此之前调用 get_pty,在这种情况下,shell 将通过 pty 操作,并且通道将连接到 pty 的 stdin 和 stdout。

当 shell 退出时,通道将被关闭并且不能被重用。如果您想打开另一个 shell,您必须打开一个新通道。

于 2013-01-18T07:50:54.493 回答