我有一个在服务器上的可执行文件。许多用户可以使用 SSH 登录到该服务器并执行二进制文件。
我希望对执行此二进制文件的每个用户拥有独占访问权限。如果可能的话,我希望有一个用户队列,将被一个一个地服务。
是否可以使用 bash 脚本来执行此操作?
假设我将我的二进制文件称为 asmy.exec
并将脚本称为access.sh
. 我可以保证每个用户my.exec
只能通过access.sh
. 所以很容易在这个可执行文件之上编写一个包装器。
此外,可执行文件需要提供可变参数。
我在这里有一个部分解决方案 -
#!/bin/bash
# Locking
LOCK_FILE="/tmp/my.lock"
function create_lock_and_execute {
echo "Waiting for Lock"
while [ -f ${LOCK_FILE} ]
do
username=`ls -l ${LOCK_FILE} | cut -f 3 -d " "`
echo $username is using the lock.
sleep 1
done
(
# Wait for lock ${LOCK_FILE} (fd 200).
flock -x 200
echo "Lock Acquired..."
# Execute Command
echo "Executing Command : $COMMAND"
${COMMAND}
) 200>${LOCK_FILE}
}
function remove_lock {
rm -f ${LOCK_FILE}
}
# Exit trap function
function exit_on_error {
echo "Exiting on error..."
remove_lock
exit 1
}
# Exit on kill
function exit_on_kill {
echo "Killed, exiting..."
remove_lock
exit 1
}
# Exit normaly
function exit_on_end {
echo "Exiting..."
remove_lock
exit 0
}
trap exit_on_kill KILL
trap exit_on_error ERR
trap exit_on_end QUIT TERM EXIT INT
create_lock_and_execute
谢谢