如何在创建屏幕会话时自动执行屏幕窗口中的命令

如何在创建屏幕会话时自动执行屏幕窗口中的命令

我已将 .screen rc 配置为在创建屏幕会话时创建 10 个窗口

 screen -t task1      0
 screen -t task2      1
 screen -t task3      2
 .
 .

我想要的是,每当我创建一个屏幕会话时,每个窗口都应该 ssh 到一台机器。我尝试了各种各样的方法,比如

 screen -t task1      0 "ssh -p 22 [email protected]"

 screen -t task1      0 bash "ssh -p 22 [email protected]"

但它似乎不起作用。

答案1

您的问题是引用。

screen -t task1 1 "ssh foo@bar"
screen -t task2 2 bash "ssh foo@bar"

第一行将尝试执行名为“ ”的命令,ssh foo@bar而不是将其拆分成单词;尝试不使用引号。

第二行将指示 bash 执行名为“ ssh foo@bar”的脚本,而不是将其解析为命令;这需要标志-c

screen -t task1 1 ssh foo@bar
screen -t task2 2 bash -c "ssh foo@bar"

要测试到底发生了什么,请将 screenrc 中的命令粘贴到交互式会话中。假设命令字符是默认的,请尝试^a:获取与屏幕命令行等效的内容。

^a:screen -t task1 2 "ssh foo@bar"

.. 应该会给你错误信息
Cannot exec 'ssh foo@bar': No such file or directory

相关内容