Установите соединение ssh и введите пароль sudo полностью автоматически - PullRequest
0 голосов
/ 16 ноября 2018

Я хочу автоматически установить ssh-соединение и установить пакет на подключенную машину.Я могу обработать SSH соединение автоматически.Я даже могу запускать команды, которые не требуют авторизации sudo.Но я не нашел способа автоматически вводить пароль в командах, которые требуют авторизации sudo.Как вы думаете, я могу автоматически ввести пароль sudo?

asd.sh

/usr/bin/expect -c 'spawn ssh -t usr@ip bash "pwd; sudo apt-get update"; expect "password:"; send "12345\r"; interact;'

asd.sh output

spawn ssh -t usr@ip bash pwd; sudo apt-get update
usr@ip's password: 
/bin/pwd: /bin/pwd: cannot execute binary file
[sudo] password for usr:

1 Ответ

0 голосов
/ 16 ноября 2018

Вам нужен аргумент -c для передачи командной строки в Bash.Также постарайтесь, чтобы шаблон соответствовал полной строкеПопробуйте:

/usr/bin/expect -c 'spawn ssh -t usr@ip bash -c "pwd; sudo apt-get update"; expect "*password:"; send "12345\r"; interact;'
                                             ^^                                     ^

Обратите внимание, что для такого рода задач Ansible может быть очень полезным, поскольку он позаботится обо всех шаблонах, связанных с SSH и SUDO, и предлагаетмодули уровня для простого выполнения любой задачи.

Сценарий Ansible ('playbook') будет выглядеть так (не проверено):

- hosts: ip
  tasks: 
    - name: Update and upgrade apt packages  
      become: true
      apt:
        upgrade: yes

Вы можете сохранить пароль SUDO в файле,и этот файл может быть зашифрован.

...