我有一个bash脚本,它运行一些命令。这些命令接受输入,我希望能够自动执行此操作,因为输入始终相同。
当被要求时,是否可以一次发送这些行?
Y
{JustPressEnter}
{JustPressEnter}
{JustPressEnter}
yes
APassword
完整命令就是这个(实际IP已删除)
apt-get install ssh-client \
&& mkdir /var/www/.ssh/ \
&& chown www-data:www-data /var/www/.ssh/ \
&& sudo -u www-data ssh-keygen -t rsa \
&& cat /var/www/.ssh/id_rsa.pub | ssh root@1.2.3.4 'cat >> .ssh/authorized_keys' \
&& sudo -u www-data touch /var/www/.ssh/known_hosts \
&& sudo -u www-data ssh-keygen -R 1.2.3.4 \
&& sudo -u www-data ssh-keyscan -H 1.2.3.4 >> /var/www/.ssh/known_hosts
答案 0 :(得分:2)
两个不同的答案:
使用expect
自动执行命令。 This answer显示了expect
用于通过密码输入自动apt-get
的示例。 Here这篇文章详细讲述了expect
。
以批处理模式写入每个命令。 ssh-keygen可以接受所有这些内容作为参数; apt-get install -y packagename
会在每个提示中假定为“是”。如果你正确编写代码,则不需要进行键盘交互。