锁定主机池中的远程主机

时间:2015-01-08 16:04:27

标签: bash shell

假设我在某个文件中有一个主机池

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。是否有更优雅的方式来实现我想要的目标?

0 个答案:

没有答案
相关问题