【问题标题】:Can I ssh somewhere, run some commands, and then leave myself a prompt?我可以在某个地方 ssh,运行一些命令,然后给自己一个提示吗?
【发布时间】:2012-03-07 07:09:45
【问题描述】:

我发现自己需要登录各种服务器,设置环境变量,然后交互工作。

例如

$ ssh anvil
jla@anvil$ export V=hello
jla@anvil$ export W=world
jla@anvil$ echo $V $W
hello world

如何组合前几个命令,然后让自己处于提示符下?

类似:

$ ssh anvil --on-login 'export V=hello; export W=world;'
jla@anvil$ echo $V $W
hello world

显然这是一个模型问题。我真正要问的是“我如何 ssh 到另一台机器,运行一些命令,然后像手动运行它们一样继续?”

【问题讨论】:

    标签: shell ssh


    【解决方案1】:

    可能最简单的事情是:

    $ ssh -t 主机 'cmd1; cmd2;嘘-我'

    如果要设置变量,请执行以下操作:

    $ ssh -t 主机 'cmd1; cmd2; FOO=你好 sh -i'

    请注意,这是一个可怕的 hack,最好将所需的初始命令放在脚本中并执行以下操作:

    $ scp 设置主机:~ $ ssh 主机 主机$。设置

    【讨论】:

    • 这正是我想要的那种东西,但它的工作原理并不完全相同。它说“没有作业控制”之类的东西,并且手册页不使用寻呼机。
    • @JohnLawrenceAspden 尝试添加 -t
    • 威廉,你为什么说这是一个可怕的黑客。它似乎像一个魅力。有什么意想不到的东西等着咬我吗? -i 是干什么用的?
    • 如果您将 sh -i 更改为 '$SHELL' 这将运行在远程帐户上配置的相同 shell 解释器。
    • 哦,您可能希望使用-l 而不是-i。 ($SHELLsh
    【解决方案2】:

    您还可以使用以下expect 脚本:

    #!/usr/bin/expect -f
    spawn ssh $argv
    send "export V=hello\n"
    send "export W=world\n"
    send "echo \$V \$W\n"
    interact
    

    【讨论】:

    • 这太棒了。我宁愿有一些可以放在命令行上的东西(因此出现在历史记录、笔记等中)。但我可以按照我的意愿完成这项工作。谢谢!
    • 很棒的答案。这正是我想要的。
    【解决方案3】:

    原来这个问题已经回答了这个问题:

    How can I ssh directly to a particular directory?

    到 ssh:

    ssh -t anvil "export V=hello; export W=world; bash"
    

    接着是:

    jla@anvil$ echo $V $W
    hello world
    

    【讨论】:

      【解决方案4】:

      值得注意的是ssh -t实际上可以用于通过另一台主机连接到一台主机。

      例如,如果您想在 anvil 上执行命令,但 anvil 只能从主机 gateway 访问(通过防火墙等)。 ),你可以这样做:

      ssh gateway -t 'ssh anvil -t "export V=hello; export W=world;bash -l";'
      

      退出 anvil,也会让您退出 gateway(如果您想在离开 anvil 后留在 gatway 上而不是添加另一个bash -l 在关闭命令之前。

      【讨论】:

        【解决方案5】:

        另一种方法是处决这个野兽(也给了我一个彩色外壳):

        ssh host -t "echo 'rm /tmp/initfile; source ~/.bashrc; cd foo/; git status' > /tmp/initfile; bash --init-file /tmp/initfile"

        【讨论】:

          猜你喜欢
          • 2017-02-04
          • 2020-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多