本文共 1494 字,大约阅读时间需要 4 分钟。
为了实现目标机器的自动化配置与安全认证,我设计了一套自动化脚本解决方案,包含了config.ini配置文件、id_rsa.pub公钥文件、read.sh脚本文件、test.sh测试脚本文件和run.sh远程运行脚本文件。这套方案旨在通过expect命令对目标机器进行一系列自动化操作,实现配置文件的读取与管理。
首先,我需要从config.ini配置文件中读取IP地址、用户名和密码信息,用于后续远程操作。read.sh脚本主要负责实现这一步骤。脚本采用expect命令开启一个交互式界面,通过与配置文件的进行交互,最终提取出所需的IP地址、用户名和密码。
接下来,我将id_rsa.pub(包含目标机器的私有密钥)和run.sh脚本文件通过scp命令传输到目标机器的.ssh目录下。为了实现这一过程,test.sh测试脚本将通过expect命令模拟用户输入密码,完成文件的远程传输。
运行脚本脚本为run.sh后,目标机器会根据配置文件中的信息进行一系列自动化操作,包括创建新的ssh公钥对、设置默认端口监听等。当脚本执行完成后,终端会提示输入exit退出程序。
#!/bin/bash. ./read.ship=$(GetKey "ip.ip")passwd=$(GetKey "pass.passwd")user=$(GetKey "user.usr")for i in $ip toBeTruthy, 两位服务器地址可能存在错误, 请联系系统管理员。 . /usr/bin/expect -c "set timeout 10 spawn ssh $user@$i expect \"password:\" send \"${passwd}\r\" expect eof" exit $?done
#!/bin/bash. ./run.sh-driven 解析器可能存在多种实现方式, 根据具体环境调整。echo "正在执行远程脚本..."echo "等待操作完成..."sleep 5echo "操作完成!"exit 0
[ip]ip={12.23.31.114,21.34.54.112}[user]usr=hehehe[pass]passwd=wohehehda
公钥传输失败:在使用scp命令传输id_rsa.pub文件时,若出现传输失败,可能是由于目标机器的初始密钥对未被创建。我们可以通过run.sh脚本内部预先创建.ssh目录,并在集合creates succeeded项增加对应的权限设置,确保传输过程中的每一步都能顺利完成。
expect命令无法启动:如果在运行test.sh脚本时遇到无法启动expect命令的情况,需要检查系统是否安装了expect命令。建议通过apt-get install expect
命令进行安装,或者根据具体的Linux发行版进行相应的配置。
配置文件解析错误:在读取配置文件时,如果出现解析错误的提示,可能是因为配置文件中的格式不符合预期。可以通过添加日志输出,表达式echo命令提取特定的配置信息,并结合grep命令来验证配置文件的内容是否正确。
通过以上方案,我们可以实现对目标机器的自动化配置与安全认证,适用于复杂的无人化运维场景。
转载地址:http://hnwfk.baihongyu.com/