![如何远程登录到一台机器,执行设置环境的脚本,然后接受用户输入?](https://linux22.com/image/494992/%E5%A6%82%E4%BD%95%E8%BF%9C%E7%A8%8B%E7%99%BB%E5%BD%95%E5%88%B0%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%EF%BC%8C%E6%89%A7%E8%A1%8C%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E7%9A%84%E8%84%9A%E6%9C%AC%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8E%A5%E5%8F%97%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%EF%BC%9F.png)
几个小时以来,我一直在尝试寻找一种方法来做到这一点,但没有任何进展。
我有一个大型环境文件,已将其保存为 ksh 脚本。如果我输入 ./setEnv.sh,此脚本将完美运行
但是,我想使用 ssh 或 rsh 登录到远程系统,执行此脚本,然后允许我以修改后的形式使用该系统。我能够成功执行脚本,但执行后连接总是会关闭。我希望能够保持此连接打开。
关于我该如何做到这一点,您有什么想法吗?
目前,我使用 SSH 还是 RSH 来实现这一点并不重要。RSH 更可取。我使用的是多种 Linux 和 Solaris 操作系统,因此,采用一种万能方法会更好。
像这样的命令:
ssh user@host "/home/me/directory/setEnv.sh"
确实在远程机器上执行了脚本,但不允许我使用修改后的环境。
谢谢,马特
答案1
ssh -t -t user@host 'bash -l -i --init-file env.sh'
部分-t -t
是强制 ssh 分配一个 TTY,bash -l -i
部分是以登录模式和交互方式启动 bash。
这--init-file
部分是你的脚本如何操纵环境。它应该提供来源~/.bashrc
和/etc/bash.bashrc
。
答案2
也许您可以在完成脚本后手动运行 shell。
ssh ip -l root "/bin/bash env.sh; /bin/bash"
答案3
或者简单地编辑你的.bash_profile并添加./setEnv.sh 命令。
答案4
如果我理解正确的话(我不确定我是否理解正确),那么您只需使用“source”命令执行此操作。
ssh 到目标机器,然后“source env.sh;nextcommand;nextcommand”
那有意义吗?