在远程机器上以交互方式创建新用户

Creating a new user interactively on a remote machine

我有这样的功能:

function accountSetup() {
ssh -tt $HOST << EOF
    adduser billy
    [second command]
    [third command]
EOF
}

使终端挂起 。我之前使用 -tt 标志成功地使用 EOF 交互式地执行了一些命令,但是我似乎无法使用上述脚本在我的远程服务器上交互式地创建一个新帐户。

这很好用,允许我设置密码、名称等:

function accountSetup() {
    ssh -tt $HOST adduser billy
}

但是,当我介绍我的其他必要命令时,它开始变得愚蠢。我确信有更好的方法来执行它们而无需像这样重复登录:

function accountSetup() {
    ssh -tt $HOST adduser billy
    ssh -tt $HOST [third command]
    ssh -tt $HOST [second command]
}

问题: 是什么导致我的终端在我的第一个功能中挂起?如何ssh in once 交互创建账号并继续执行命令?

谢谢:)

如果您告诉 ssh 从 heredoc 获取输入,它不能同时通过 tty 从您那里获取输入。

您可以将命令重写为:

function accountSetup() {
    ssh -t $HOST '
        adduser billy
        [second command]
        [third command]
    '
}