我有一个脚本,显示我正在运行的AWS上的所有实例:
$/home/scripts/show_instances.sh
i-f66d2de0 running 10.148.17.40
i-fxxdbbe0 running 10.148.20.60
(...)
我想做的是将第一个IP,管道连接到ssh并自动连接到服务器。我试过这个:
$/home/scripts/show_instances.sh | tail -1 | awk '{print $3}' | xargs ssh
但是没有工作:它连接到服务器但是在我输入的第一个命令(即ls)之后,终端似乎正在等待某些东西而没有任何反应(我在mac连接到Unix),所以我必须使用 ctrl + c 退出实例。一些建议?
答案 0 :(得分:4)
使用命令替换,并在其中运行一次awk
以从第一行获取所需的IP,然后执行ssh
:
ssh "$(/home/scripts/show_instances.sh | awk 'NR==1{print $NF; exit}')"
如果你想坚持管道,并xargs
一个,那么分配伪TTY(-t
)应该让你进入并以交互方式运行:
/home/scripts/show_instances.sh | awk 'NR==1{print $NF; exit}' | xargs ssh -tt
对于最后一行,请执行:
ssh "$(/home/scripts/show_instances.sh | awk 'END{print $NF}')"
/home/scripts/show_instances.sh | awk 'END{print $NF}' | xargs ssh -tt