bash - Bash:在shell脚本中将变量传递给其他服务器
问题描述
我有控制器节点(CN)和服务器节点(SN)。从 CN,我需要配置每个 SN 的主机名。inv
文件包含 SN 列表和相应的主机名。
在下面的脚本中,我不确定如何传递hostname
变量。有什么最好的方法来达到同样的效果吗?
#!/bin/bash
IFS='\n'
for data in `awk 'NR>1 {print}' inv`
do
ip=`awk '{print $1}' <<< $data`
hostname=`awk '{print $2}' <<< $data`
ssh root@$ip "hostnamectl set-hostname $hostname"
done
inv 文件,
IPs Hostname
172.31.98.11 Server1
172.31.106.177 Server2
172.31.97.105 Server3
解决方案
无需在awk
此处使用,因为您只是在第一条记录之后打印所有行。Atail
做这项工作。
您可以使用这个 bash 脚本:
while read -r ip hn; do
ssh root@"$ip" "hostnamectl set-hostname $hn"
done < <(tail -n +2 inv)
推荐阅读
- spring - 具有动态目的地的春季云流多接收器
- android - 在 Android 10+ 上从外部存储(包括下载文件夹)获取所有文件
- android - 如果在两种情况下都启用数据绑定,则 binding.name.text && name.text 有什么区别
- plot - Seaborn 双胞胎情节未按预期工作
- c# - 使用 .NET 中的数据绑定项从集合的 id 设置组合框值
- reactjs - 在函数中的 onSubmit 之后添加警报
- django - Django 订阅者功能
- c# - 将cURL请求转换为asp.net c#
- excel - Excel - 有没有办法告诉一个单元格使用基于另一个单元格的第一个字母的某个功能?
- r - 拆分面板回归在 R 中得到一个独特的结果