建立ssh连接并完全自动输入sudo密码

问题描述 投票:2回答:1

我想自动建立ssh连接并将数据包安装到连接的计算机上。我能够自动处理SSH连接。我甚至可以运行不需要sudo授权的命令。但我没有找到在需要sudo授权的命令中自动输入密码的方法。你怎么认为我可以自动输入sudo密码?

阿斯顿.是

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

asd.sh输出

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:
bash expect openssh pwd
1个回答
3
投票

您需要使用-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密码存储在文件中,并且可以加密该文件。

© www.soinside.com 2019 - 2024. All rights reserved.