Как выполнить команду sudo NOPASSWD на другом сервере через SSH

Как выполнить команду sudo NOPASSWD на другом сервере через SSH

Я прочитал все посты, связанные с этой проблемой. Но если вы можете увидеть и мой, и дать предложение.

Я пытаюсь сделать 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

Заранее спасибо!!

решение1

Эта проблема обычно вызвана файлом sudoers. Одна из вещей, которую можно попробовать, — это сделать скрипт, который просто запускает sh, а затем запустить команду sudo из этой командной строки sh и посмотреть, нужен ли пароль.

Обратите внимание, что sudo имеет тенденцию запоминать, если вы недавно аутентифицировали пароль с того же логина. Так что если sudo посчитает, что вы достаточно аутентифицированы один раз (возможно, вы ввели пароль), а затем вы внесете изменения в /etc/sudoers, а затем снова попытаетесь выполнить sudo, вы можете легко быть введены в заблуждение, потому что sudo может не запросить у вас подтверждение, потому что sudo может запомнить, что вы прошли тест менее 5 минут назад. Это устанавливается значением "timeout" в /etc/sudoers (man sudoers).

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

похоже, что это, вероятно, довольно излишне запутано. Я иногда видел, как sudo работает, а su не работает, или наоборот. Эта команда требует, чтобы работали оба. Во многих системах,

sudo -i ~shuksand/Mib.sh $DATA

вероятно, сделают то же самое.

решение2

Я думаю, что вам нужно отредактировать файл /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» («root» подразумевается/используется по умолчанию при выполнении su)

Связанный контент