【问题标题】:How to call ssh from script(csh/tcsh)?如何从脚本(csh/tcsh)调用 ssh?
【发布时间】:2019-11-27 08:31:32
【问题描述】:

我有不同 IP 的不同服务器,我可以在任何服务器上 ssh 并保持我的数据库完整(我不知道如何,我只是一个用户)。 我已经编写了一个脚本,使用 ssh 在我在第一台服务器的同一目录中从一台服务器移动到另一台服务器。

在这里你可以看到最终的命令,如果我输入就会起作用:

ssh -X usr@192.168.1.xyz -t 'cd /home/usr/regression && exec /bin/csh'

现在这里是小脚本的一部分:

set path = $PWD  
set user = $1  

set cmd = "ssh -X $user@192.168.$ip3.$ip4 -t 'cd $path && exec $SHELL'"
echo $cmd;
$cmd;

既然是 csh/tcsh 脚本,我只想运行

$cmd

命令,但它给出了这个消息:

ssh:找不到命令。

如果我复制、粘贴并运行我得到的最终命令:

echo "$cmd" 

喜欢:

ssh -X usr@192.168.1.xyz -t 'cd /home/usr/regression && exec /bin/csh'

然后它就可以正常工作了。

【问题讨论】:

  • 似乎应该可以工作。您是否仅用一个裸露的$cmd(没有尾随;)尝试过?但是,它如何与192.16.1.xyz 一起工作;-?祝你好运。
  • @shellter 我没有使用;在最后一个命令 "$cmd" ......xyz 只是例如它可以通过任何数字 210... :-) Wumpus Q. Wumbley 解决了这个问题,它是路径变量。
  • 是的,我看到我输入了;与 $cmd。但我没有在我的脚本中使用它。由于我的脚本中此 $cmd 之前有 echo 语句......

标签: linux shell ssh command-line csh


【解决方案1】:

csh 中的path 变量是一个绑定到PATH 环境变量的魔法数组。当你改变它时,你失去了原来的PATH。不只是 ssh,之后所有外部命令都会失败,因为找不到它们,除非它们在 $PWD 中,这是你的新 PATH

将您的 path 变量称为其他变量。

【讨论】:

  • 感谢@Wumpus Q. Wumbley,我更改了变量名,现在可以使用 ssh 登录。还有一个问题它要求输入密码,但之后说“ cd /my_path/ ”:找不到命令......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
相关资源
最近更新 更多