【发布时间】:2015-04-21 11:28:02
【问题描述】:
我希望能够将参数传递给远程机器。 在这个脚本中,我想根据权限对远程目标机器上的一些文件进行 chmod,我在源机器的相同文件上找到这些文件。
如果目标机器是我运行脚本的同一台机器,它对我有用(代码的 chmod $perm $path 部分有效)。 如果我尝试在远程机器上 chmod 文件,它不起作用(ssh root@"${destnode}" chmod $perm $path)。
还有一个问题。此脚本无法处理文件/文件夹名称中的空格。谁能帮我解决这个问题?
#!/bin/bash
sourcenode=$1
destnode=$2
path1=/root/test
tmp=/tmp/file-list
ssh root@"${sourcenode}" "find ${path1} -exec stat -c '%a %n' {} \; " > $tmp
cat $tmp | ssh root@"${destnode}" 'cat - > /tmp/file-list '
ssh root@"${destnode}" cat $tmp |
while read perm path
do
#ssh root@"${destnode}" chmod $perm $path
chmod $perm $path
done
【问题讨论】:
-
“处理[ing]空格”的答案是在使用变量时引用它们。你已经为
"${destnode}"这样做了。当你运行ssh版本的命令时会发生什么?你有错误吗? -
带引号的技巧适用于带空格的名称:)。谢谢。不,我没有收到任何错误。看起来,当我尝试将变量($perm 和 $path)传递给远程机器时,变量($perm 和 $path)变空了。
标签: bash parameters host