Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 进入root,创建tmux,发送命令,然后附加-所有这些都通过bash脚本中的单个SSH命令完成_Shell_Ssh_Root_Tmux - Fatal编程技术网

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

Shell 进入root,创建tmux,发送命令,然后附加-所有这些都通过bash脚本中的单个SSH命令完成,shell,ssh,root,tmux,Shell,Ssh,Root,Tmux,如何通过SSH发送命令: ssh user@server -t 它将创建一个tmux会话,向它发送命令,然后附加-允许您手动处理命令中显示的交互?这必须在以root用户身份登录的同时完成,而不是通过sudo ssh user@server -t "bash -c \"su - -c \"tmux -d \; apt-get update \; apt-get upgrade\" root\"" 或者干脆不使用bash-c(这是一种试图让SSH显示tmux窗口的尝试),因为它(当使用su而不是

如何通过SSH发送命令:

ssh user@server -t
它将创建一个tmux会话,向它发送命令,然后附加-允许您手动处理命令中显示的交互?这必须在以root用户身份登录的同时完成,而不是通过sudo

ssh user@server -t "bash -c \"su - -c \"tmux -d \; apt-get update \; apt-get upgrade\" root\""
或者干脆不使用bash-c(这是一种试图让SSH显示tmux窗口的尝试),因为它(当使用su而不是sudo时)不会显示shell。这只是在从脚本运行它时发生的,当直接作为shell命令运行时没有问题

另一个尝试是:

ssh user@server -t "su - -c \"tmux new-session -n $session_name && tmux send-keys -t $session_name \"$command\"\" root"
后一种方法工作得比较好——只不过它连接到tmux会话,因此命令只能在手动退出tmux后发送

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


有什么想法吗?

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

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的输入返回给用户。这是朝着正确方向迈出的一步,但并不完全正确


对于那些感兴趣的人来说,我发现有效的命令是:

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的输入返回给用户。这是朝着正确方向迈出的一步,但并不完全正确

非常开放的更有效的答案