linux - 在远程计算机上以交互方式创建新用户

标签 linux ssh terminal account

我有这样的功能:

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一次以交互方式创建帐户并继续执行命令?

谢谢:)

最佳答案

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

您可以将命令重写为:

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

关于linux - 在远程计算机上以交互方式创建新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54940962/

相关文章:

linux - 指向结构中包含的结构的指针

ruby-on-rails - 通过 ruby​​ 脚本克隆 bitbucket 存储库时,权限被拒绝(公钥)

ssh - 通过 SSH 隧道从远程位置连接 ipython-notebook

ruby-on-rails - Rails和Net:SSH

shell - 运行命令但留在 shell vs exit

javascript - Google Analytics 片段导致 Linux Firefox 中的页面刷新

c - 在 linux 中使用 C 和 uinput 库模拟击键

linux - 我在哪里可以找到 libnautilus 的文档?

linux - 我正在处理哪些文件?

linux - 将标准输入/输出重定向到替代命令