假设我在某个文件中有一个主机池
HOSTS.TXT:
hosta@domain
hostb@domain
hostc@domain
我希望能够锁定主机(类似于flock / tmp / lockfile),以便其他程序无法使用该主机。我想用一个bash脚本完成这个任务,该脚本遍历主机列表,ssh'es进入该主机,尝试在该机器上flock / tmp / lockfile,如果成功,则返回主机名。如果不成功,可能会返回一些错误代码。
目前,我有这样的事情:
#!/bin/bash
USER=someuser
while read host; do
echo -n "Trying ${host}..."
xterm -e "ssh \"${USER}@${host}\" 'flock -n /tmp/lockfile -c \"echo Locked $host; read\"'" &
FLOCK_PID=$!
sleep 1
kill -0 $FLOCK_PID;
if [ ! $? ]; then
echo -n "${host}"
exit 0
fi
done <hosts.txt
exit 1
这有效,但有一些不足之处。由于read命令,我认为不阻止shell的唯一方法是启动xterm。是否有更优雅的方式来实现我想要的目标?