On Mon, Aug 26, 2019 at 1:56 PM Pingfan Liu <piliu(a)redhat.com> wrote:
'hostname -A' can not get the alias, meanwhile 'hostname -a' is
deprecated.
So we should do it by ourselves.
The parsing is based on the format of /etc/hosts, i.e.
IP_address canonical_hostname [aliases...]
Signed-off-by: Pingfan Liu <piliu(a)redhat.com>
---
dracut-module-setup.sh | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 3fa696d..4187554 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -689,12 +689,33 @@ kdump_check_iscsi_targets () {
}
}
+# hostname -a is deprecated, do it by ourselves
+get_alias() {
+ local ips
+ local entry
+ local _alias
+ local alias_set
+
+ ips=$(hostname -I)
+ for ip in $ips
+ do
+ entry=$(grep $ip /etc/hosts)
+ if [ $? -eq 0 ]; then
+ _alias=$(echo $entry | awk '{ print $3 }')
If there are multiple alias, this will only catch the first one?
eg. in my /etc/hosts there is:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
and:
# echo 127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4 | awk '{ print $3 }'
localhost.localdomain
+ alias_set="$alias_set $_alias"
+ fi
+ done
+
+ echo $alias_set
+}
+
is_localhost() {
local hostnames=$(hostname -A)
local shortnames=$(hostname -A -s)
+ local aliasname=$(get_alias )
A redundant space?
local nodename=$1
- hostnames="$hostnames $shortnames"
+ hostnames="$hostnames $shortnames $aliasname"
for name in ${hostnames}; do
if [ "$name" == "$nodename" ]; then
--
2.7.5
--
Best Regards,
Kairui Song