Повторная проверка пользователя для запуска сценария как sudo без нескольких запросов пароля

Я пытаюсь написать скрипт, который автоматически регистрирует меня в конфигурациях OpenVPN. Мне удалось автоматизировать один логин, например:

#!/bin/bash cd filepath/ username= "username" password= "password" read -sp "Enter Sudo Password: " sudopassword /usr/bin/expect << EOF spawn sudo openvpn config-file.ovpn expect "password for $USER: " send "$sudopassword\r" expect "Enter Auth Username: " send "$username\r" expect "Enter Auth Password: " send "$password\r" expect "$ " EOF 

Я сохранил это как один сценарий оболочки. Тогда я просто бегаю:

 ./killvpn 

Из отдельного файла .sh, чтобы убедиться, что предыдущее VPN-соединение прервано:

 #!/bin/bash sudo pkill vpn 

Мой сценарий до сих пор начинается в отдельном каталоге и вызывает эти сценарии к действию следующим образом:

 ## Project Folder is called: VPN ## ## Filepath: VPN/ ## #!/bin/bash ./login1.sh sleep 30m ./killvpn echo " " echo "Logging in to VPN2" echo " " ./login2.sh sleep 30m 

И так далее. Мой файл ./login2.sh идентичен ./login1.sh, однако я удалил следующие разделы:

 read -sp "Enter Sudo Password: " sudopassword 

а также:

 expect "password for $USER: " send "$sudopassword\r" 

Тем не менее, ./login2.sh по-прежнему запрашивает у меня пароль sudo при его запуске, несмотря на то, что основной сценарий готов к работе с привилегиями root. Это делает скрипт непригодным для использования, так как мое VPN-соединение просто отключилось бы, если бы я не наблюдал за ним в открытом терминале.

Может ли кто-нибудь проявить любезность просмотреть этот код и рассказать, как запустить ./login2.sh без приглашения sudo, и помочь мне определить, где я ошибся, пожалуйста?

Самый простой способ убрать требование пароля при использовании sudo (без изменения вашего скрипта) – это определить ваши привилегии пользователя с помощью «nopasswd» в / etc / sudoers:

 myuser ALL=(ALL:ALL) NOPASSWD:ALL 

Это позволило бы пользователю “myuser” запускать любую команду от имени пользователя root без запроса пароля.

(Не забудьте использовать команду ‘visudo’, чтобы изменить файл sudoers, а не редактировать его напрямую).

Будет ли проще просто запустить sudo ./yourScript.sh и не запрашивать пароли sudo?