如何通过SSH在其他服务器上执行sudo NOPASSWD命令


2

我已经阅读了与该问题相关的所有帖子。但如果你能看到我的并提出建议。

我正在尝试使用无密码SSH并在远程服务器上运行脚本。但Sudo访问要求密码。请建议。它适用于本地路径。但是任何命令或脚本都要求root访问失败。

以下是脚本:

#!/bin/sh
#set -x
# This Script will search for mib files on Current Server and other Server
# to load mib on current Server.

if [ -f /home/shuksand/Script/MibSearch.conf ]
then
        . /home/shuksand/Script/MibSearch.conf
else
        echo "Failed to find config file. Hence Existing!!!!"
fi

# Check alll MIBS on Server


while read line
do
        ServerName=$line
        echo $line
        scp  /home/shuksand/Input/Mib.txt $ServerName:
        cat /home/shuksand/Input/Mib.txt | while read DATA
        do
                echo $DATA
                ssh -t -t shuksand@${ServerName} 'sudo su - root /bin/sh /home/shuksand/Mib.sh $DATA'
        done
done < /home/shuksand/Input/ServerList.txt

提前致谢!!

Answers:


0

我认为您需要做的是编辑/ etc / sudoers文件。添加如下内容:

<your username> ALL=(ALL) NOPASSWD: ALL

您可以在此处找到更多信息:https//askubuntu.com/questions/147241/execute-sudo-without-password

我可以建议您修复问题的格式吗?您编写的大部分内容(脚本)与您的问题无关。

编辑:如果您已正确设置Mib.sh文件并在文件的开头包含!#/ bin / sh行,那么您需要运行的只是'sudo su - /home/shuksand/Mib.sh $ DATA'(执行su时隐含/默认为“root”)


0

此问题通常由sudoers文件引起。要尝试的一件事是让脚本运行sh,然后从该sh提示符运行sudo命令,并查看是否需要密码。

请注意,如果您最近通过同一登录验证了密码,则sudo会记住。因此,如果sudo认为你有足够的身份验证一次(也许你输入了密码),然后你对/ etc / sudoers进行了更改,然后你再次尝试sudo,你很容易被误导,因为sudo可能不会提示你,因为sudo可能记得你在不到5分钟前通过了考试。这是由/ etc / sudoers(man sudoers)中的“timeout”值设置的。

sudo su - root / bin / sh /home/shuksand/Mib.sh $ DATA

看起来很可能,而且是不必要的,令人费解。我有时看到sudo工作,su失败,反之亦然。该命令需要两者都能工作。在许多系统上,

sudo -i~shuksand / Mib.sh $ DATA

可能会做同样的事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.