【问题标题】:ssh with command....Plus the shellssh with command....加上shell
【发布时间】:2010-12-10 15:55:33
【问题描述】:

我想要一个 ssh 进入机器的命令,运行命令(cd 或执行脚本或 su),然后给我 shell。向 ssh 传递命令似乎总是退出。

我正在寻找的一些示例: 'ssh me@machine1 "./executeMyScript && cd /developmentDirectory"' 然后它把我的 shell 还给我。

我想这样做的原因是因为我正在使用 mrxvt(选项卡式 x 术语),它允许我为所有选项卡定义命令以在启动时执行。我想在同一台机器上建立几个 ssh 连接,但让它们在 ssh 后做不同的事情。

-罗伯

谢谢!

【问题讨论】:

    标签: shell ssh openssh rxvt


    【解决方案1】:

    这对我有用。

    /usr/bin/ssh -t yourdomain.com "cd /directory; bash -i"
    

    【讨论】:

    • 为什么它对你有用?提供更多细节,以便 OP 能够理解你为什么写你所做的。
    • 这也是 4 年前发布的现有所选答案的或多或少的直接副本......
    • 解释一下就好了。
    【解决方案2】:

    其他答案的变化真的,使用 ssh 的 -t 选项强制伪 tty 分配:

    ssh -t me@machine ./executeMyScript '&&' bash -i
    

    【讨论】:

    • 谢谢!在第一次检查时,这完全符合我的要求! “-t”万岁!
    • 即使这个问题得到了适当的回答,如果有人正在阅读,你知道我怎样才能让我用这个命令开始的 bash 实例打开 emacs(这样当我关闭 emacs 时,它回到我的 bash 终端)?哎呀..即使是在没有 bash 的情况下打开 emacs 的东西也会很好(这样 emacs 在启动后不会立即退出)。
    【解决方案3】:

    如何使用 ssh_config 中的 SendEnv 选项将特定环境选项从本地计算机发送到远程计算机,然后在远程主机的配置中检查该环境变量?

    在您的 .ssh/special-config-file 中:

    remotehost:
        SendEnv *
    

    您的本地脚本:

    RUN_THIS_FIRST_COMMAND=blah
    ssh -F special-config-file
    

    您的远程 .bash_profile:

    if [ "$RUN_THIS_FIRST_COMMAND" != "" ] ; then
        $RUN_THIS_FIRST_COMMAND
    fi
    

    您可能需要检查其中的一些行,我只是从手册页中将它们放在一起,并且之前没有尝试过任何这些。就我个人而言,我不喜欢为此解决方案同时修改本地和远程环境。

    【讨论】:

      【解决方案4】:

      在你想运行的脚本的最后加上这样的东西:

      bash -li
      

      这会将 Bash 作为交互式登录 shell 启动。它并不完美,因为您会错过 TERM 转发等功能,但它可能足以满足您的需求。

      如果这还不够,我只需进行两次单独的 ssh 调用,一次用于运行脚本,另一次用于登录。

      【讨论】:

        【解决方案5】:

        怎么样

            ssh me@machine ./executeMyScript '&&' bash -i
        

        你必须引用&&,这样它才会被传递到远程机器而不是被本地shell吞下。

        引用';' 字符,您也可以更改起始目录:

            ssh me@machine ./executeMyScript '&&' cd /developmentDirectory ';' bash -i
        

        【讨论】:

        • 谢谢。对 bash 的调用起作用了……infosar,因为它给了我一个外壳。不幸的是,它不能很好地工作.. 简单的键盘快捷键(如 ctrl^a)不起作用,这意味着我需要尝试找到不同的解决方案。顺便说一句,它还会打印出“bash: no job control in this shell”。
        • 尝试使用-t 选项:ssh -t me@machine ...
        猜你喜欢
        • 2022-12-02
        • 2022-12-04
        • 1970-01-01
        • 2010-12-05
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-07
        相关资源
        最近更新 更多