【问题标题】:Launch two xterm and ssh into servers automatically自动启动两个 xterm 和 ssh 到服务器
【发布时间】:2014-12-20 03:08:01
【问题描述】:

我正在使用以下 bash 脚本,但它有几个问题:

  1. 在第一个 xterm 被杀死之前,第二个 xterm 不会启动
  2. 我必须杀死每个使用 quit 而不是简单地 $exit 启动的 xterm
  3. 我运行脚本的 bash 终端被锁定,直到两个 xterm 都被杀死
  4. 我想在启动 xterm 和 ssh 到服务器后更改目录

    read -s -p "PW? " password
    
    xterm -bg red -fg yellow -hold -e sshpass -p $password ssh user@server1
    
    xterm -bg blue -fg yellow -hold -e sshpass -p $password ssh user@server2
    

任何帮助将不胜感激。谢谢。

所提供的解决方案使我能够创建以下完美运行的解决方案:

xterm -bg red -fg yellow -e sshpass -p $password ssh -Y -t user@server1 'cd /home/user/work; $SHELL -i' &
xterm -bg blue -fg yellow -e sshpass -p $password ssh -Y -t user@server2 'cd /home/user/work/; $SHELL -i' &

【问题讨论】:

  • 需要 q4 的更多详细信息:您的意思是在远程 shell 会话中,您想 cd 到某个目录,然后在交互式 shell 中继续?
  • 是的。我需要在一天中使用这些窗户。

标签: bash ssh xterm sshpass


【解决方案1】:

问题 (1) 和 (3) 通过在后台启动 xterms 得到解决:

xterm -bg red  -fg yellow -hold -e sshpass -p $password ssh user@server1  &
xterm -bg blue -fg yellow -hold -e sshpass -p $password ssh user@server2  &

问题(4),你可以用expect做更多有趣的事情,但这应该可以(仅用ssh测试,不使用xterm和sshpass):

xterm -bg blue -fg yellow -hold -e sshpass -p $password ssh -t user@server2 'cd /var/log; $SHELL -i'  &

假设您的 SHELL 将 -i 理解为“交互式外壳”。
请注意向 ssh 添加了 -t 选项。

【讨论】:

  • 注意,你必须在任何地方引用你的密码:"$password"
  • @glennjackman 当您已经涵盖了前 75% 时,不想为最后 25% 写一个全新的答案...如果您愿意,请随时将其添加到您的答案中...
猜你喜欢
  • 2019-11-24
  • 2021-11-26
  • 2013-12-25
  • 1970-01-01
  • 2019-08-23
  • 2020-11-28
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多