【发布时间】:2021-05-27 20:37:27
【问题描述】:
我需要通过 ssh 进入 memcached 服务器并执行确保连接。 我应该重新使用相同的 ssh 连接并继续执行其输出将存储在某个日志中的命令。这应该是一个按特定时间间隔运行的计划作业。
代码 1 为每次执行建立多个 ssh 连接。
#!/bin/bash
USERNAME=ec2-user
HOSTS="10.243.107.xx 10.243.124.xx"
KEY=/home/xxx/xxx.pem
SCRIPT="echo stats | nc localhost 11211 | grep cmd_flush"
for HOSTNAME in ${HOSTS} ; do
ssh -l ${USERNAME} -i ${KEY} ${HOSTNAME} "${SCRIPT}"
done
代码 2 在 ssh 之后挂起。
#!/bin/bash
USERNAME=ec2-user
KEY=/home/xxx/xxx.pem
ssh -l ${USERNAME} -i ${KEY} 10.243.xx.xx
while:
do
echo stats | nc localhost 11211 | grep cmd_flush
sleep 1
done
有没有更好的方法?
【问题讨论】:
-
我不确定代码 2 试图做什么。您是否打算在远程主机上运行无限 while 循环?
-
@Reshma:在第二次尝试中,您打开了一个远程 shell,但不为其提供任何输入。我看到了两种方法:模拟通过
expect传递命令,或者将所有单独的命令放在一个大命令中并执行。 -
@joanis 是的,我想建立一次连接,然后多次执行命令......每1分钟,每30分钟,1小时,1天......
-
您可以使用控制主功能在
ssh的后续执行之间保持SSH连接,这样您就不需要每次都重新验证。