我创建了一个非常长的脚本,可以完全自动化我公司的Web服务器的安装和配置。在脚本运行时期间,它使用scp和ssh访问某个远程服务器以下载配置文件,我希望能够拥有一个保存密码的秘密文件(它始终是相同的密码)并且脚本将使用此文件,而不需要我手动插入它。脚本中的一些行看起来像这样:
/usr/bin/scp root@192.168.1.10:/etc/mail/sendmail.cf /etc/mail/
/usr/bin/scp -r root@192.168.1.10:/etc/yum.repos.d /etc/
/usr/bin/ssh root@192.168.1.10 'rpm -qa --queryformat "%{NAME}\n" >/tmp/sw.lst'
/usr/bin/scp root@192.168.1.10:/tmp/sw.lst /tmp/
/usr/bin/xargs yum -y install < /tmp/sw.lst
我知道#ssh-keygen
和#ssh-copy-id
的方法,但问题是脚本每次都会在不同的机器上运行,我不想在每次运行之前交换密钥。< / p>
答案 0 :(得分:0)
当我必须做类似的事情时,我使用了expect
和一个从文件中获取密码的包装脚本。
即在我的密码文件中,我有类似
root@192.168.1.10 ThisIsMyPass
user@localhost thisIsMyOtherPass
然后让包装器脚本得到(它可以简单为grep "root@192.168.1.10" ~/.passwords | cut -d ' ' -f2
)
我猜测有更合适的方法,但是使用这个方法你只需要保护你的包装和密码文件,你可以将你的安装脚本公开。