我需要在ssh上运行sudo命令: -
ssh ${SSH_SERVER} -l "sudo <command>"
我想在脚本中输入密码并将其提供给sudo - 比如。
export PASSWORD=<From user>
ssh ${SSH_SERVER} -l "sudo <command> | echo $PASSWORD"
我无法编写这样的脚本并需要帮助。
bash -version GNU bash,版本4.1.2(1)-release(x86_64-redhat-linux-gnu) 版权所有(C)2009 Free Software Foundation,Inc。 许可证GPLv3 +:GNU GPL版本3或更高版本http://gnu.org/licenses/gpl.html
===== EDIT ===================
我尝试了下面给出的建议,但收到了错误。
[user@my-host ~]$ cat temp.sh
#!/bin/bash -xv
function f1 {
### Do NOT indent these lines until end comment ###
cat > /tmp/$HOSTS-pw.sh <<EOS
#!/bin/sh -xv
ssh -q -tt $HOSTS sudo "sudo ls" <<EOC
$SUDOPW
EOC
EOS
### End Comment ###
chmod 700 /tmp/$HOSTS-pw.sh
/tmp/$HOSTS-pw.sh >/dev/null
if [ -f /tmp/$HOSTS-pw.sh ]; then rm -f /tmp/$HOSTS-pw.sh; fi
}
export HOSTS="destination.host"
echo "Enter SUDO password:"
read -s SUDOPW
f1
unset SUDOPW
exit 0
[user@my-host ~]
[user@my-host ~]
[user@my-host ~]
[user@my-host ~]$ ./temp.sh
#!/bin/bash -xv
function f1 {
### Do NOT indent these lines until end comment ###
cat > /tmp/$HOSTS-pw.sh <<EOS
#!/bin/sh -xv
ssh -q -tt $HOSTS sudo "sudo ls" <<EOC
$SUDOPW
EOC
EOS
### End Comment ###
chmod 700 /tmp/$HOSTS-pw.sh
/tmp/$HOSTS-pw.sh >/dev/null
if [ -f /tmp/$HOSTS-pw.sh ]; then rm -f /tmp/$HOSTS-pw.sh; fi
}
export HOSTS="destination.host"
+ export HOSTS=destination.host
+ HOSTS=destination.host
echo "Enter SUDO password:"
+ echo 'Enter SUDO password:'
Enter SUDO password:
read -s SUDOPW
+ read -s SUDOPW
f1
+ f1
+ cat
+ chmod 700 /tmp/destination.host-pw.sh
+ /tmp/destination.host-pw.sh
#!/bin/sh -xv
ssh -q -tt destination.host sudo "sudo ls" <<EOC
My-password
EOC
+ ssh -q -tt destination.host sudo 'sudo ls'
tcgetattr: Inappropriate ioctl for device
+ '[' -f /tmp/destination.host-pw.sh ']'
+ rm -f /tmp/destination.host-pw.sh
unset SUDOPW
+ unset SUDOPW
exit 0
+ exit 0
答案 0 :(得分:1)
这是一个基本shell,用于在ssh上运行各种sudo命令,而无需以明文或shell历史记录发送密码。临时文件在您自己的主机上创建和删除。
另外,根据命令和情况,您还可以使用nopasswd在sudoers文件中为特定命令添加帐户。我希望这有帮助。我提供了更多信息,我可以提供更多帮助。
#!/bin/bash
function() {
if "something" ;
then
### Do NOT indent these lines until end comment ###
cat > /tmp/$HOSTS-pw.sh <<EOS
#!/bin/sh
ssh -q -tt user@$HOSTS sudo "your command here" <<EOC
$SUDOPW
EOC
EOS
### End Comment ###
chmod 700 /tmp/$HOSTS-pw.sh
/tmp/$HOSTS-pw.sh >/dev/null
if [ -f /tmp/$HOSTS-pw.sh ]; then rm -f /tmp/$HOSTS-pw.sh; fi
else
echo "some thing"
fi
}
echo "Enter SUDO password:"
read -s SUDOPW
for loop here function; done
unset SUDOPW
exit 0