如何使用tty通过ssh运行屏幕执行命令



我今天尝试了很多方法,让ssh启动一个执行命令的屏幕会话。目标是在远程机器上运行命令,并能够看到输出,以及分离和重新连接输出。我想在一个脚本中完成它,除了分离屏幕会话以关闭之外,没有任何交互。到目前为止还没有令人满意的解决方案。

ssh -t ${host} "
source ~/.bashrc; 
echo "done."; 
cd "$exedir"; 
if [ $? -ne 0 ]; then 
echo "could not cd into directory"; 
exit 1; 
fi; 
echo "executing remotexe.sh ..."; 
screen -S "remotexe" -t "remotexe" -R "nice -n$prio ./remotexe.sh ${exeparams[@]}";"

我遇到的一些问题与将命令传递到screen/ssh/bash的奇怪方式有关,这种方式会干扰参数和选项(我不太明白他们为什么不使用--将下面的内容解释为带参数的命令)。上面的版本几乎有效。剩下的困难是remotexe.sh中的命令(尤其是make)显然错过了.bashrc的导出和定义。这就是我尝试包含source ~/.bashrc的原因。我试图向remotexe.sh添加类似的命令或显式导出,但它的行为就像是由/bin/sh执行的。如果我进行传统的ssh登录,我可以立即运行remotexe.sh脚本而不会出错。我还尝试将shell -$SHELL添加到我的.screenrc中。

这个解决方案的错误在哪里?我该如何更正?

我根本没有测试过你的代码,也不会保证这是合理的,但你肯定有一个引用错误。尝试:

ssh -t ${host} "
source ~/.bashrc;
echo done.;
cd "$exedir" || exit 1;
echo executing remotexe.sh ...;
screen -S remotexe -t remotexe -R nice -n$prio ./remotexe.sh ${exeparams[@]};"

相关内容

  • 没有找到相关文章

最新更新