转到root,创建​​tmux,发送命令然后附加 - 所有这些都通过bash脚本中的单个SSH命令完成

时间:2015-06-14 17:00:59

标签: shell ssh root tmux

你将如何通过SSH发送命令:

ssh user@server -t "bash -c \"su - -c \"tmux -d \; apt-get update \; apt-get upgrade\" root\""

哪个会创建一个tmux会话,向它发送命令然后附加 - 允许你手动处理命令提供的交互性?这必须在以root用户身份登录的同时完成 - 不是通过sudo。

ssh user@server -t "su - -c \"tmux new-session -n $session_name && tmux send-keys -t $session_name \"$command\"\" root"

或者只是没有bash -c(这是尝试使用SSH来显示tmux窗口 - 因为它(当使用su而不是sudo时)不会显示shell。这只是在从脚本运行它时 - 直接作为shell命令运行时没有问题。

另一种尝试是:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
     listView.setNestedScrollingEnabled(true);
}

后者工作相对较好 - 只是它附加到tmux会话,因此仅在手动退出tmux后才发送命令。

这个想法基本上是自动创建一个tmux会话,其中运行一些命令 - 然后附加到它。这是作为bash脚本的一部分完成的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,我发现工作的命令是:

ssh -p22 user@server -t "su - root -c \"tmux -d $session_name\;\"-t $session_name -c \"apt-get update\"\" \; \"-t $session_name -c \"apt-get upgrade\"\"\""

但是它不会让你进入tmux - 只是将tmux的输入发送给用户。朝着正确的方向迈出了一步,但并不完全......!

对更有效的答案非常开放!