
Я прочитал все посты, связанные с этой проблемой. Но если вы можете увидеть и мой, и дать предложение.
Я пытаюсь сделать 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)