ssh:发送包含 RETURN 的 tmux 命令
ssh: sending a tmux command containing RETURN
我有一个服务器 运行ning 我有一个 tmux
会话 运行ning.
如果我登录到服务器,我可以运行
tmux send-keys -t mysess "list^M"
注意^M
!我通过 CTRL-V 键入它,然后在 bash 中输入 Return。这会将 return 密钥发送到 tmux 会话。
现在,我也可以通过 ssh 发送命令来做同样的事情:
ssh myfancyserver tmux send-keys -t mysess "list^M"
一切顺利。
但是,现在我想在 python 中做同样的事情。 运气不好!
我试过了
subprocess.check_output(
'ssh myfancyserver tmux send-keys -t mysess "list\x10"')
因为I read 10 是换行符。运气不好!
我尝试在 python 源中使用 CTRL-V 和 Return 输入换行符,但这会破坏文件。
我还用 paramiko 尝试了一些东西,包括使用 channel.send
和 exec_command
- 都不走运。
我的感觉是换行符在传输过程中丢失了?
^M
(CR) 是 \x0d
,而不是 \x10
(^J
又名 LF 是 [=14=]x0a
,所以两者都不是)。在 Python 中,您还可以用 \r
表示它,这可能更具可读性并且更不容易出错。
根据http://jkorpela.fi/chars/c0.html\x10
(DLE)的意思是
A transmission control character which will change the meaning of
a limited number of contiguously following characters.
Its [sic] is used exclusively to provide
supplementary data transmission control functions.
Only graphic characters and transmission control characters
can be used in DLE sequences.
LF十进制为10;也许您对基地感到困惑。 \x
表示后面两位数为十六进制。 (然后 CR 将是 13,而不是 10。)
我有一个服务器 运行ning 我有一个 tmux
会话 运行ning.
如果我登录到服务器,我可以运行
tmux send-keys -t mysess "list^M"
注意^M
!我通过 CTRL-V 键入它,然后在 bash 中输入 Return。这会将 return 密钥发送到 tmux 会话。
现在,我也可以通过 ssh 发送命令来做同样的事情:
ssh myfancyserver tmux send-keys -t mysess "list^M"
一切顺利。
但是,现在我想在 python 中做同样的事情。 运气不好!
我试过了
subprocess.check_output(
'ssh myfancyserver tmux send-keys -t mysess "list\x10"')
因为I read 10 是换行符。运气不好!
我尝试在 python 源中使用 CTRL-V 和 Return 输入换行符,但这会破坏文件。
我还用 paramiko 尝试了一些东西,包括使用 channel.send
和 exec_command
- 都不走运。
我的感觉是换行符在传输过程中丢失了?
^M
(CR) 是 \x0d
,而不是 \x10
(^J
又名 LF 是 [=14=]x0a
,所以两者都不是)。在 Python 中,您还可以用 \r
表示它,这可能更具可读性并且更不容易出错。
根据http://jkorpela.fi/chars/c0.html\x10
(DLE)的意思是
A transmission control character which will change the meaning of a limited number of contiguously following characters. Its [sic] is used exclusively to provide supplementary data transmission control functions. Only graphic characters and transmission control characters can be used in DLE sequences.
LF十进制为10;也许您对基地感到困惑。 \x
表示后面两位数为十六进制。 (然后 CR 将是 13,而不是 10。)