我想在bash中编写脚本来连接到服务器,在另一个服务器上ping,从ping命令获取ip,并将该信息发送回运行脚本的pc,最后连接到之前ping的服务器。
我的剧本:
#!/bin/bash
echo "Script to connect to server"
#ip_p used to connect to first server, on that server i want to use ping command'
ip_p=XYz.XYZ.XYZ.XYZ
user='username to the servers'
#ip_d - in that variable i want to save ip of the pinged server
ssh -t $user@$ip_p ip_d="ip_d=ping -c1 $1.domain | sed -nE 's/^PING[^(]+\(([^)]+)\).*/\1/p' && exit "
echo "start"
echo $ip_d
echo "stop"
ssh -t $user@$ip_d
我希望如何工作:
域我要检查test.nyslay.pl
连接到脚本中定义了ip和用户名的服务器
ping服务器(part.nyslay.pl)总是一样的,但是“test”我想从脚本运行的第一个参数中读取
从上一点获取域的ip
将ip从点2传输到运行脚本的本地计算机
连接到从点2获取ip的服务器
最佳答案
使用命令替换:
ip_d=$(ssh -t $user@$ip_p "ping -c1 $1.domain | sed -nE 's/^PING[^(]+\(([^)]+)\).*/\1/p'")
ping
的输出(通过sed
)通过ssh
到达本地机器,其输出被捕获在本地变量ip_d
中。关于linux - 在ssh中传递变量并获得答案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41000392/