在bash脚本中

时间:2015-07-21 09:25:10

标签: bash

我有一个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

1 个答案:

答案 0 :(得分:2)

两个不同的答案:

  • 使用expect自动执行命令。 This answer显示了expect用于通过密码输入自动apt-get的示例。 Here这篇文章详细讲述了expect

  • 以批处理模式写入每个命令。 ssh-keygen可以接受所有这些内容作为参数; apt-get install -y packagename会在每个提示中假定为“是”。如果你正确编写代码,则不需要进行键盘交互。