Вам нужен аргумент -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 в файле,и этот файл может быть зашифрован.