gpt4 book ai didi

linux - 如何使用 tty 通过 ssh 运行 screen 执行命令

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:42 27 4
gpt4 key购买 nike

今天我尝试了很多方法来让 ssh 启动一个执行命令的 screen session 。目标是在远程计算机上运行命令并能够查看输出并分离和重新连接后者。我想在脚本中执行此操作,除了分离 screen session 以关闭之外,无需任何交互。目前还没有令人满意的解决方案。

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[@]};"

关于linux - 如何使用 tty 通过 ssh 运行 screen 执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13543063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com