The ipv6 address has the special character colon ":", so we can use the
new function to pick it out.
We can use the new function to parse the passed parameter. The passed
parameter is hostname/domain, if it is satisfied with the condition that
it is without colon ":", and contanis the [a-zA-Z].
Add a new function to simplify to get the ip address, if the specified
address is a domain/hostname in /etc/kdump.conf.
The function will parse the passed parameter, and use the "getent ahost"
to get the ip address, if passed parameter is domain/hostname.
Signed-off-by: Minfei Huang <mhuang(a)redhat.com>
---
dracut-module-setup.sh | 1 +
kdump-lib.sh | 48 +++++++++++++++++++++++++++++++++++++-----------
2 files changed, 38 insertions(+), 11 deletions(-)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 8d451b4..f5fce2f 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -628,6 +628,7 @@ install() {
inst "/bin/dd" "/bin/dd"
inst "/bin/tail" "/bin/tail"
inst "/bin/date" "/bin/date"
+ inst "/bin/getent" "/bin/getent"
inst "/bin/sync" "/bin/sync"
inst "/bin/cut" "/bin/cut"
inst "/sbin/makedumpfile" "/sbin/makedumpfile"
diff --git a/kdump-lib.sh b/kdump-lib.sh
index b886c5d..cc33e01 100755
--- a/kdump-lib.sh
+++ b/kdump-lib.sh
@@ -170,21 +170,47 @@ get_remote_host()
echo $_config_val
}
-# check the remote server ip address tpye
-is_ipv6_target()
+# Convert hostname to ip address, echo the original value if $1 is already an ip
address.
+# $1: hostname or ip address
+get_ip_address()
{
- local _server _server_tmp
+ local _ip_address
+
+ _ip_address=`getent ahosts $1 | head -n 1 | cut -d' ' -f1`
+ _ip_address=${_ip_address:-$1}
+ echo $_ip_address
+}
+
+# the ipv6 address has the special character colon ":", so we can pick it out.
+# we can pass a ip address, if ipv6 address, will return ipv6 address,
+# otherwise return NULL
+is_ipv6_host()
+{
+ local _addr=$(get_ip_address $1)
+ echo $_addr | grep -q ":"
+}
+
+get_network_target()
+{
+ local _target
if is_ssh_dump_target; then
- _server=`get_option_value ssh`
+ _target=`get_option_value ssh`
elif is_nfs_dump_target; then
- _server=`get_option_value nfs`
+ _target=`get_option_value nfs`
fi
- [ -z "$_server" ] && return 1
- _server=`get_remote_host $_server`
- _server_tmp=$_server
- _server=`getent ahosts $_server | head -n 1 | cut -d' ' -f1`
- _server=${_server:-$_server_tmp}
- echo $_server | grep -q ":"
+ [ -z "$_target" ] && return
+
+ _target=`get_remote_host $_target`
+ echo $_target
+}
+
+# check the remote server ip address tpye
+is_ipv6_target()
+{
+ local _target=$(get_network_target)
+
+ [ -z "$_target" ] && return 1
+ echo $(is_ipv6_host $_target)
}
--
1.9.3