Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash-ssh后在引号内重定向_Bash_Ssh - Fatal编程技术网

bash-ssh后在引号内重定向

bash-ssh后在引号内重定向,bash,ssh,Bash,Ssh,对于bash来说还是相当新的,并且有一个使用ssh命令的脚本。在ssh调用之后,我将代码用单引号引起来。我下面的示例就是这样做的,我发现它可以防止在运行脚本后登录到我试图访问的服务器时被中断(我只想访问服务器上的信息,不想与服务器交互)。除了重定向,所有代码都可以工作,因为文本文件中没有写入任何内容。我已经在下面添加了代码 while read h; do ssh $h\ 'for i in path/some/file; do temp=$() if [ $? ==

对于bash来说还是相当新的,并且有一个使用ssh命令的脚本。在ssh调用之后,我将代码用单引号引起来。我下面的示例就是这样做的,我发现它可以防止在运行脚本后登录到我试图访问的服务器时被中断(我只想访问服务器上的信息,不想与服务器交互)。除了重定向,所有代码都可以工作,因为文本文件中没有写入任何内容。我已经在下面添加了代码

while read h; do
  ssh $h\
  'for i in path/some/file; do
     temp=$()
     if [ $? == 1]; then
       echo $i>>somefile.txt
       echo "here"
     fi
  done'
done <serverlist.txt
读取h时
;做
ssh$h\
'对于路径/some/file中的i;做
温度=$()
如果[$?==1];然后
echo$i>>somefile.txt
回声“这里”
fi
完成

完成了,它不应该起作用
如果[$?==1]
缺少空格,并且
temp=$()
没有做任何有用的事情。您正在远程主机上查找文件,对吗?它不会把它写到你的本地主机上。我同意以上所有的观点,并且对/path/some/file中的i的
感到好奇;执行
。这将把字符串
/path/to/file
分配给fiar
$i
(它不会读取任何内容)。最好手动
ssh
到远程机器,让
for
循环在cmd行上工作,代码中的环绕与单引号一样。并通过
ssh
执行。祝你好运,可能是权限问题。确保运行您的程序的人有权在
somefile.txt
上写入。输出将进入远程服务器$h上执行脚本的用户的homedir。事实上,您在远程服务器上打开一个shell,您的“echo”就在那个里执行。我很确定,如果你写一个可运行的脚本(不是那个,根本不工作…),你会在每台服务器上找到一个“somefile.txt:)@Sampisa,这正是我找到的。是否可以将服务器$h的输出重定向回包含原始文本文件的服务器?