- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个这样的服务器列表文件:
xxx ServerName1 xxx
xxx ServerName2 xxx
...
现在我想去每个服务器从本地重命名一个文件。我的 Bash 脚本是这样的:
#!/bin/bash
while read line
do
server=`echo $line | awk '{print $2}'` # get server name
rsh $server mv /a/b/c.txt /a/b/d.txt # rename on the server
echo "rename file in $server" # print echo
done < server.txt
但是,它只会转到第一个“SeverName1”,重命名文件并打印回显。它永远不会转到其余服务器,甚至不打印回显。我不知道为什么它只适用于第一个。
有人帮我吗?
最佳答案
不要让 rsh
吃掉输入流的其余部分——如果吃掉了,while read
就没有什么可读的了。下次循环尝试开始。最简单的方法是将其标准输入从 /dev/null
重定向。 :
rsh "$server" mv /a/b/c.txt /a/b/d.txt </dev/null
或者,您可以遍历 0 以外的 FD(请注意,在这里使用 awk
是愚蠢的;您可以告诉 bash 本身只从每一行中挑选出第二个字段,我在下面的代码中就是这样做的):
while read -u 3 _ server _; do # get server name (with read)
rsh "$server" mv /a/b/c.txt /a/b/d.txt # rename on the server
echo "rename file in $server" # print echo
done 3< server.txt
解释一些可能不太明显的要点:
3
是文件描述符编号;它需要在 -u 3
之间匹配和 3< server.txt
.您可以选择使用 read _ server _ <&3
而不是依赖 read -u
,如果您希望您的代码与 bash 以外的 shell 兼容。_
我们吃你不想要的田地read
将内容放入。 read _ server _
将第一个字段放入 _
,第二个字段变成server
, 和第三个及以后的字段到 _
.关于linux - Bash 在多台服务器上运行 rsh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30226936/
我遇到一个问题,即使用 RSH 远程启动脚本时端口不足。 我有一个需要运行的脚本,该脚本已被推送到每台服务器。我有一个服务器列表(主机文件列表) 基本上,我有一个简单的循环可以并行运行它们。 for
rsh 命令正在删除远程 shell 中的双引号。 例如:我的命令rsh 10.20.1.25 my_pgm -g "NAME1 NAME2"在远程外壳中my_pgm -g 姓名 1 姓名 2 我也想
我正在尝试运行这个 bash 命令,但我无法绕过“|”管道符 rsh -l user machine "echo "PORTS = 123|456|789">> conf.cfg" 获得: bash:
我正在尝试运行 python 脚本,我需要从脚本中 Rsh 命令,我想运行的命令是:df -Pk|grep "sd\|md"|gawk '{print $2}' 我这样做是因为- cmd2='df -
最近有一个问题困扰着我。 我正在尝试使用 rsh 或 remsh(在 HPUX 中)执行以下操作: #!/bin/sh rsh myDNS" DIRECTORY=/tmp/foo1/foo2
我有一个这样的服务器列表文件: xxx ServerName1 xxx xxx ServerName2 xxx ... 现在我想去每个服务器从本地重命名一个文件。我的 Bash 脚本是这样的: #!/
我想在 Unix 的远程机器上将程序作为守护进程运行。我有 rsh 连接,我希望程序在断开连接后运行。 假设我有两个程序:util.cpp 和 forker.cpp。 util.cpp 是一些实用程序
我现有的批处理脚本可以在 Windows XP 中运行。这些脚本使用 windows xp 支持的 rcp 和 rsh 命令。 这些脚本用于连接到 unix box 并将文件传输到它。稍后使用 rsh
我有一个主服务器,可以在网络上抓取数据,并进行索引编制。之后它开始镜像到所有的镜像服务器。 为此,我使用rsync 和 rsh。 但是在镜像服务器开始更新之前,需要时间。我想找出发生延迟的位置。 我的
我有一个 Perl Expect.pm在多个远程 unix 主机上执行一些中等复杂的事情的脚本,如打包应用程序、部署应用程序、检查日志等。 我的前任使用 rsh 编写了类似的脚本。 两者之间有更好的方
在 C 上编写程序,使用 libnet 和 libpcap 模拟 RSH 客户端,并在运行 RSHD 的服务器计算机上注入(inject)我自己的命令。 据我了解,该命令应该位于 ACK 数据包的“有
我正在尝试编写一个 rsh 到 unix 机器上的脚本,并在某些文件上执行某些命令 rsh 的机器(在本例中是一台名为 uk01ff200 的机器) 在机器中搜索一个目录 然后在该目录中搜索以 cor
我正在调用 rsh在 go exec.Command: rsh := fmt.Sprintf("--rsh=\"/usr/bin/ssh -p %s -o StrictHostKeyChecking=
是否有可能让 git 使用“ssh”以外的东西作为 ssh 程序?为此,rsync 有一个 -e 选项,以及可以将 rsh 或 ssh 用作传输的其他接口(interface)。我的特定用例是通过堡垒
任何人都可以提供 nsh 命令列表的链接吗以及像rsh或ssh一样如何使用nsh远程执行linux命令 最佳答案 我在 Stackoverflow 上查找有关 NSH 的信息时发现了这篇文章。 好消息
我是一名优秀的程序员,十分优秀!