arrays - 如何获取远程服务器主机名作为变量并使用它?

标签 arrays linux bash csv ssh

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

该脚本具有服务器阵列,连接到所有服务器并运行命令来解压缩文件,按日期降序对 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

最佳答案

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

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

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

关于arrays - 如何获取远程服务器主机名作为变量并使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835701/

相关文章:

java - Android:如何创建二维数组的副本以在另一个线程中使用?

android - 我看不到使用 gdb 加载的 coredump 中的符号

linux - 如何更改用于服务文件的 apache httpd 端口

linux - 如何在 awk 中使用多个操作来编辑文本文件

bash - 防止引号在 Azure DevOps 任务之间从 JSON 中消失

javascript - 使用 Javascript 创建表

c# - 未知大小的数组,包含具有可变数量的值/属性的项目

ruby - 我有一个 Ruby 对象数组,如何根据这些对象的属性将此数组更改为多个数组?

linux - 如何使用cp从不同目录复制多个文件?

bash - 如何在不排序的情况下删除两个文件之间的公共(public)行?