2014-12-01 128 views
1

我试着去编写一个脚本,RSH的到UNIX计算机和某些文件在UNIX中的Bash shell脚本rsh到另一台机器上执行命令

  1. RSH的交给机器来执行某些命令(在这种情况下,一台名为uk01ff200)
  2. 搜索目录中机
  3. 则该目录搜索开始核心文件中
  4. 在这些文件上执行一个命令(如果存在的话),然后创建新文件

SCRIPT至今:

#!/bin/bash 
# 
MACHINE=uk01ff200 
DIRECTORY=/var/core 

rsh $MACHINE "cd /var/core" 
for file in `ls -1 core.*`   
do stack_dump $file   
done 

当我这样做是它的工作原理在命令行外壳手动。因此,如果我将rsh转移到机器上,请cd到该目录,然后键入for循环它的工作(所以我知道for循环语法是正确的)。所以我不知道我的脚本出错了。

+0

非交互'rsh'不启动一个shell你。那些下一行将在本地运行,而不是在远程主机上运行。你需要使它们成为'rsh'本身的命令参数的一部分。 – 2014-12-01 16:43:19

+0

@EtanReisner你能告诉我在这种情况下你会怎么做? – nrs90 2014-12-01 17:55:58

回答

1

我会做什么用here-document

#!/bin/bash 
# 
MACHINE=uk01ff200 
DIRECTORY=/var/core 

rsh $MACHINE bash <<'EOF' 
cd /var/core 
for file in core.*   
    do stack_dump "$file"   
done 
EOF 
+0

感谢您的建议!似乎没有工作,但?当我运行脚本时,shell会返回: 'rlogin:关闭连接.' 此脚本中是否缺少任何内容? – nrs90 2014-12-01 17:44:24

+0

您是否测试了我上次编辑的代码片段?你检查过stack_dump是否已经被执行了吗? – 2014-12-01 17:59:52

+1

我认为这需要'rsh'$ MACHINE“bash”或类似的运行shell来接收标准输入或单个字符串作为参数。 – 2014-12-01 18:00:11

相关问题