我想编写一个shell脚本来执行以下操作:
我试过这样的东西,但它不起作用..任何帮助都会非常感激。谢谢!
#! /bin/bash
dir1=dirname
runNo=0
for i in 1 2
do
runNo=$(($runNo+1))
echo "host$i runNo$runNo"
ssh host$i "cd /tmp;
if [ -d $dir1 ]; then
cd $dir1;
else
mkdir $dir1;
cd $dir1;
fi;
cp ~/local/file$runNo file"
echo "done"
done
答案 0 :(得分:1)
怎么样
ssh host$i "mkdir -p /tmp/$dir1"
scp ~/local/file$runNo host$i:/tmp/$dir1/file
如果目录已经存在, mkdir -p
会阻止错误。
答案 1 :(得分:0)
或许这样吗?
runNo=1
for h in host1 host2; do
cat ~/local/file$runNo |
ssh "$h" 'mkdir -p /tmp/dirname; cat >/tmp/dirname/file'
runNo=$(($runNo+1))
done
如果我正确理解您的说明,则cd
是多余的。
如果需要Bourne shell兼容性,可以用
替换增量 runNo=$(expr $runNo + 1)
答案 2 :(得分:-1)
试试这个:
ssh -t -t host$i <<eod1
echo "your command goes here"
add eod1 to terminate your ssh
eod1
注意需要两个-t -t来覆盖sudo终端错误
这个编辑规则让我发疯了