【发布时间】: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:使用dig或nslookup解析主机名。 -
我尝试了类似的方法,但无法让我的 "$file".csv 表示为 hostname_date.csv