ssh - 在 while 循环中使用 SSH

标签 ssh wait ksh

我有一个简单的脚本可以使用 SSH 在远程服务器上创建目录:

    while read memberName; do
        ssh ${serverPath} "mkdir -p ${filePath}"
        wait
    done < sqlRes.txt

(我已经简化了一点 - 这些变量确实存在并且很好)。

如果我将每个 SSH 调用设置为后台作业(使用 &),效果会更好,但不完全(例如,它应该创建 200 个目录,但只执行 170 个)。

实际上,它在 sqlRes.txt 中的第一个条目之后退出循环,没有错误消息并且返回成功状态。

我尝试过 sleep 和等待命令,但都没有帮助。

我猜可能存在子 shell 的限制,但我认为“等待”应该确保每个 shell 都已关闭,然后再尝试下一个?

请问有什么想法吗?

仅供引用 - Linux RedHat 中的 ksh

最佳答案

抱歉 - 经过更多搜索后找到了答案(ssh 是交互式的并接受所有输入。更改为“ssh -n”并且一切正常)。

关于ssh - 在 while 循环中使用 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15135521/

相关文章:

unix - ksh 将字符串拆分为数组以写入文件

git - 如何让 SSH 客户端在不需要时不要求输入密码

linux - 如何通过 SSH 从一个 Raspberry PI 到 VirtualBox 中运行的 Raspberry PI

mysql - 如何轻松安全地远程连接到postgres或mysql?

java - wait() 调用时出现 IllegalMonitorStateException

javascript - javascript 中等待/ sleep 的更好方法

java - 等待上一个函数执行完毕

shell - 将 sendmail 用于 HTML 正文和二进制附件

具有多个命令的 Linux SSH

linux - `elif' 意外.. 对于日期函数