我尝试做一个bash脚本,它连接到终端中的openvpn,然后打开另一个终端窗口,然后ssh进入系统。但我最终得到错误“ssh:无法解析主机名:没有与主机名“”关联的地址。我的代码:
#!/bin/bash
sudo openvpn academy.ovpn &
gnome-terminal --tab --title="test" --command="bash -c 'read IP; ssh htb-student@$IP; echo HTB_@cademy_stdnt!; $SHELL'"
可能有一些错误,在“读IP”的一部分或“htb学生@$IP”,但我不能弄清楚。
我试着在$IP
周围加上引号,但没有用。我希望它能ssh没有任何错误。
1条答案
按热度按时间pes8fvy91#
直接的问题是,您在一个双引号的上下文中传递
$IP
,因此在read
有机会运行之前,它就被 shell 展开了。如果你想将代码传递给远程shell,让本地shell通过声明一个函数来封装它,然后告诉shell将该函数序列化为一个可以传递给ssh的字符串: