【问题标题】:How to ask for `hostname` in a script that is run remotely如何在远程运行的脚本中询问“主机名”
【发布时间】:2012-04-28 03:28:13
【问题描述】:

我想让主机 A 通过ssh 在主机 B、C、D 上运行脚本。脚本需要知道主机的主机名(是 B、C 还是 D?)。

我在主机 A 上执行以下脚本时遇到以下问题:

#!/bin/sh
ssh Adam@$1 <<'EOF'
echo 12345`hostname`ABC
EOF

对于主机名myhostB,我得到ABC45myhostB 而不是12345myhostBABC

主机 A 是 Ubuntu 服务器 10.4 32 位,主机 B、C、D 是从 cygwin 运行 openssh 的 Windows XP。

【问题讨论】:

  • 看起来hostname 的输出包含一个回车符 (\r)
  • 你试过 echo "12345hostnameABC" 吗?
  • >看起来主机名的输出包含回车 是的,确实如此。但只有在远程执行时。当在同一台机器上本地执行时,相同的命令也可以正常工作。
  • 如果您手动在myhostB 本身而不是通过ssh 运行 echo 命令会发生什么?

标签: windows bash ssh cygwin


【解决方案1】:

您可能希望使用环境变量 HOSTNAME 来代替

echo abc${HOSTNAME}def 或类似的东西

【讨论】:

    【解决方案2】:
    uname -a | grep -i cygwin && {
    echo 12345${COMPUTERNAME}ABC
    } || echo 12345`hostname`ABC
    

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2016-08-03
      • 2016-06-14
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      相关资源
      最近更新 更多