2

我正在尝试使用厨师自动化我的服务器配置过程。由于我不想以 root 身份运行 chef,我需要一个 chef/deployer 用户。但我不想手动创建这个用户。相反,我想自动化这一步。所以我尝试编写脚本,但遇到了一个问题:

问题是如果我跑

>ssh root@123.345.345.567 '/bin/bash -e' < ./add_user.sh

其中 add_user 包含

//..if the username doesnt exist already
adduser $USERNAME --gecos ''

我从来没有看到命令的输出或提示。

  1. 有没有办法以这种方式运行交互式命令?
  2. 有没有更好的方法以自动方式添加用户?
4

2 回答 2

2

尝试这个:

ssh -t root@<ipaddress> adduser $USERNAME --gecos

不知道为什么您$在原始示例中的 IP 地址中有一个 - 这可能会导致ssh连接失败,但由于您没有指出这种故障,我假设这只是一个错字。

由于add_user.sh只是一个简单的命令,不需要显式运行bash或重定向的额外复杂性,只需adduser通过ssh.

最后,由于$USERNAME很可能是在本地端而不是在远程端定义的,因此即使您可以让原始命令“按照您说的做”,您最终也会adduser --gecos在远程端运行,这不是你的意图。

于 2012-11-02T21:37:07.067 回答
0

尝试使用:

ssh -t root@$123.345.345.567 '/bin/bash -e' < ./add_user.sh

反而。

于 2012-11-02T20:58:30.780 回答