我正在尝试使用chef自动化我的服务器配置过程。由于我不想以root身份运行厨师,因此我需要一名厨师/部署人员。但我不想手动创建此用户。相反,我想自动化这一步。所以我开始编写脚本,但遇到了一个问题:
问题是如果我跑
>ssh root@123.345.345.567 '/bin/bash -e' < ./add_user.sh
其中add_user包含
//..if the username doesnt exist already
adduser $USERNAME --gecos ''
我从未看到命令的输出或提示。
答案 0 :(得分:2)
试试这个:
ssh -t root@<ipaddress> adduser $USERNAME --gecos
不确定为什么原始示例中的IP地址中有$
- 这可能会导致ssh
无法连接,但由于您没有指出那种失败,我假设这只是一个错字。
由于add_user.sh
只是一个简单的命令,因此不需要显式运行bash
或重定向的额外复杂性,只需通过adduser
运行ssh
命令即可。
最后,由于$USERNAME
很可能是在本端定义的,而不是在远端定义的,即使你可以让你的原始命令“做你说的”,你最终也会运行{ {1}}在远程端,这不是你想要的。
答案 1 :(得分:0)
尝试使用:
ssh -t root@$123.345.345.567 '/bin/bash -e' < ./add_user.sh
代替。