在bash脚本中我需要从远程服务器复制/ etc / passwd,但sshd服务不允许root登录(因为它是默认值,所以不出意外)。
所以通常我会使用类似sshpass'passwd'scp user @ server:/ etc / passwd / local / system来获取脚本进行登录和复制,但是由于用户不能是root用户,我不确定这该怎么做。我有SUDO访问权限但是在发布时需要登录密码吗?
有人这样做过吗?基本上登录cat或用sudo复制passwd文件要求输入密码?
答案 0 :(得分:0)
支持功能:
pipewrap(){
echo $1 # which is password
local lockFile=$2;
while true; do
# The function will exit when output pipe is closed,
if [ ! -e $lockFile ]; then
return 0
fi
# i.e., the ssh
read -t 1 line
if [ $? -eq 0 ]; then
# successfully read
echo $line
fi
done
}
运行ssh + sudo命令功能:
run_ssh_sudo () {
local REMOTECOMPUTER=$1;
local PASSWORD=$2;
local REMOTECOMMAND=$3;
local ARGUMENTS=$4;
local REMOTEUSER=$5;
sshpass -p "$PASSWORD" "${SSH_COMMAND}" "$REMOTEUSER@$REMOTECOMPUTER" "sudo -K"
local lockFile=`mktemp`
eval pipewrap '$PASSWORD' '$lockFile' | (sshpass -p "$PASSWORD" "${SSH_COMMAND}" "$REMOTEUSER@$REMOTECOMPUTER" "sudo -S '$REMOTECOMMAND' $ARGUMENTS"; rm "$lockFile")
}