【问题标题】:How to get remote server hostname as variable and use it?如何获取远程服务器主机名作为变量并使用它?
【发布时间】:2014-05-15 04:01:23
【问题描述】:

如何获取远程服务器主机名并将其用作文件名变量?使用此代码,我只能获取本地机器的主机名...

此脚本具有服务器数组,连接到所有服务器并运行命令以解压缩文件,按日期降序对 CSV 文件进行排序,保留前 40 行并上传到服务器。

数组中有服务器的 IP,而不是主机名。

file=$(hostname)$(date +%Y_%m_%d)

for server in "${servers[@]}"

do

ssh -t $user@$server << EOF

    unzip -o "$location1"/1.zip -d "$localdir"/
    cp -v "$localdir"/1.csv "$localdir"/jobs_optimized.csv
    head -1 "$localdir"/jobs_optimized.csv > "$localdir"/"$file".csv |\
    tail -n+2 "$localdir"/jobs_optimized.csv |\
    sort -rn -t, -k5.7,5.10 -k5.4,5.5 -k 5.1,5.2 >> "$localdir"/"$file".csv
    head -40 "$localdir"/"$file".csv > "$remotedir"/"$file".csv
    ls "$remotedir"
EOF

scp $user@$server:$remotedir/"$failas".csv /tmp/


done

【问题讨论】:

  • 您已经在变量中拥有远程服务器主机名。否则你会怎么ssh呢。
  • 这个问题似乎跑题了,因为这里没有问题。
  • 数组中只有服务器的IP。我需要获取主机名。
  • 选项 1:在远程服务器上执行 hostname。选项 2:使用 dignslookup 解析主机名。
  • 我尝试了类似的方法,但无法让我的 "$file".csv 表示为 hostname_date.csv

标签: arrays linux bash csv ssh


【解决方案1】:

您可以在远程主机上创建文件名:

    # ....
    head -40 "$localdir"/"$file".csv > "$remotedir"/"$file_$(hostname)".csv
    ls "$remotedir"
EOF

scp $user@$server:$remotedir/"$failas*".csv /tmp/

【讨论】:

  • 谢谢,但也无济于事。使用"$(hostname)_$(date +%Y_%m_%d)".csv,我可以获得本地机器主机名。
  • @Edgaras,哦,是的。您可以将 here-document 创建为脚本并在远程主机上复制/执行它。
猜你喜欢
  • 2016-10-30
  • 2016-03-24
  • 1970-01-01
  • 2011-05-04
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多