|
968 | 968 | ;;
|
969 | 969 |
|
970 | 970 | "DragonFly" | "FreeBSD")
|
971 |
| - FIND=$(${IFCONFIGBINARY} | grep ether | head -1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
| 971 | + FIND=$(${IFCONFIGBINARY} | grep ether | head -n 1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
972 | 972 | if HasData "${FIND}"; then
|
973 | 973 | HOSTID=$(echo ${FIND} | sha1)
|
974 | 974 | else
|
|
996 | 996 | for INTERFACE in ${NET_INTERFACES}; do
|
997 | 997 | if grep -q -s 'up' "/sys/class/net/${INTERFACE}/operstate"; then
|
998 | 998 | LogText "Interface '${INTERFACE}' is up, fetching MAC address"
|
999 |
| - FIND=$(head -1 "/sys/class/net/${INTERFACE}/address" | tr '[:upper:]' '[:lower:]') |
| 999 | + FIND=$(head -n 1 "/sys/class/net/${INTERFACE}/address" | tr '[:upper:]' '[:lower:]') |
1000 | 1000 | if HasData "${FIND}"; then
|
1001 | 1001 | HOSTID_GEN="linux-sys-interface-up"
|
1002 | 1002 | break
|
|
1010 | 1010 | LogText "Info: trying output from 'ip' to generate HostID"
|
1011 | 1011 | # Determine if we have the common available eth0 interface. If so, give that priority.
|
1012 | 1012 | # Note: apply sorting in case there would be multiple MAC addresses linked to increase predictable end result
|
1013 |
| - FIND=$(${IPBINARY} addr show eth0 2> /dev/null | grep -E "link/ether " | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]' | sort | head -1) |
| 1013 | + FIND=$(${IPBINARY} addr show eth0 2> /dev/null | grep -E "link/ether " | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]' | sort | head -n 1) |
1014 | 1014 | if HasData "${FIND}"; then
|
1015 | 1015 | HOSTID_GEN="linux-ip-interface-eth0"
|
1016 | 1016 | else
|
|
1020 | 1020 | # 3) Convert everything to lowercase
|
1021 | 1021 | # 4) Sort the entries, so that the output is more predictable between runs when the same interfaces are available
|
1022 | 1022 | # 5) Select first entry
|
1023 |
| - FIND=$(${IPBINARY} -family link addr show up 2> /dev/null | awk '{if($1=="link/ether" && $2 !~ "^02:42:"){print $2}}' | tr '[:upper:]' '[:lower:]' | sort | head -1) |
| 1023 | + FIND=$(${IPBINARY} -family link addr show up 2> /dev/null | awk '{if($1=="link/ether" && $2 !~ "^02:42:"){print $2}}' | tr '[:upper:]' '[:lower:]' | sort | head -n 1) |
1024 | 1024 | if HasData "${FIND}"; then
|
1025 | 1025 | HOSTID_GEN="linux-ip-interface-up-other"
|
1026 | 1026 | else
|
|
1049 | 1049 | HOSTID_GEN="linux-ifconfig-interface-eth0-ether"
|
1050 | 1050 | fi
|
1051 | 1051 | else
|
1052 |
| - FIND=$(${IFCONFIGBINARY} 2> /dev/null | grep "ether " | awk '{ print $2 }' | head -1 | tr '[:upper:]' '[:lower:]') |
| 1052 | + FIND=$(${IFCONFIGBINARY} 2> /dev/null | grep "ether " | awk '{ print $2 }' | head -n 1 | tr '[:upper:]' '[:lower:]') |
1053 | 1053 | if IsEmpty "${FIND}"; then
|
1054 | 1054 | ReportException "GetHostID" "No eth0 found (and no ether was found with ifconfig)"
|
1055 | 1055 | else
|
|
1058 | 1058 | fi
|
1059 | 1059 | fi
|
1060 | 1060 | else
|
1061 |
| - FIND=$(${IFCONFIGBINARY} 2> /dev/null | grep HWaddr | head -1 | awk '{ print $5 }' | tr '[:upper:]' '[:lower:]') |
| 1061 | + FIND=$(${IFCONFIGBINARY} 2> /dev/null | grep HWaddr | head -n 1 | awk '{ print $5 }' | tr '[:upper:]' '[:lower:]') |
1062 | 1062 | HOSTID_GEN="linux-ifconfig-interface-first-hwaddr"
|
1063 | 1063 | fi
|
1064 | 1064 | else
|
|
1077 | 1077 | ;;
|
1078 | 1078 |
|
1079 | 1079 | "macOS")
|
1080 |
| - FIND=$(${IFCONFIGBINARY} en0 | grep ether | head -1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
| 1080 | + FIND=$(${IFCONFIGBINARY} en0 | grep ether | head -n 1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
1081 | 1081 | if [ ! "${FIND}" = "" ]; then
|
1082 | 1082 | HOSTID=$(echo ${FIND} | shasum | awk '{ print $1 }')
|
1083 | 1083 | else
|
|
1099 | 1099 | ;;
|
1100 | 1100 |
|
1101 | 1101 | "NetBSD")
|
1102 |
| - FIND=$(${IFCONFIGBINARY} -a | grep "address:" | head -1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
| 1102 | + FIND=$(${IFCONFIGBINARY} -a | grep "address:" | head -n 1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
1103 | 1103 | if HasData "${FIND}"; then
|
1104 | 1104 | HOSTID=$(echo ${FIND} | sha1)
|
1105 | 1105 | else
|
|
1108 | 1108 | ;;
|
1109 | 1109 |
|
1110 | 1110 | "OpenBSD")
|
1111 |
| - FIND=$(${IFCONFIGBINARY} | grep "lladdr " | head -1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
| 1111 | + FIND=$(${IFCONFIGBINARY} | grep "lladdr " | head -n 1 | awk '{ print $2 }' | tr '[:upper:]' '[:lower:]') |
1112 | 1112 | if HasData "${FIND}"; then
|
1113 | 1113 | HOSTID=$(echo ${FIND} | sha1)
|
1114 | 1114 | else
|
|
1164 | 1164 | # Optional: DBUS creates ID as well with dbus-uuidgen and is stored in /var/lib/dbus-machine-id (might be symlinked to /etc/machine-id)
|
1165 | 1165 | sMACHINEIDFILE="/etc/machine-id"
|
1166 | 1166 | if [ -f ${sMACHINEIDFILE} ]; then
|
1167 |
| - FIND=$(head -1 ${sMACHINEIDFILE} | grep "^[a-f0-9]") |
| 1167 | + FIND=$(head -n 1 ${sMACHINEIDFILE} | grep "^[a-f0-9]") |
1168 | 1168 | if [ "${FIND}" = "" ]; then
|
1169 | 1169 | MACHINEID="${FIND}"
|
1170 | 1170 | fi
|
|
1336 | 1336 | # busybox does not support format
|
1337 | 1337 | if [ ${SHELL_IS_BUSYBOX} -eq 0 ]; then
|
1338 | 1338 | DATA=$(${STATBINARY} --format=%a ${CHECKFILE})
|
| 1339 | + else |
| 1340 | + DATA=$(${STATBINARY} -c %a ${CHECKFILE}) |
1339 | 1341 | fi
|
1340 | 1342 | ;;
|
1341 | 1343 | esac
|
|
1349 | 1351 | ;;
|
1350 | 1352 | *)
|
1351 | 1353 | # Only use find when OS is NOT AIX and binaries are NOT busybox
|
| 1354 | + if [ -d "${CHECKFILE}" ]; then |
| 1355 | + MAXDEPTH="-maxdepth 0" |
| 1356 | + else |
| 1357 | + MAXDEPTH="" |
| 1358 | + fi |
| 1359 | + |
1352 | 1360 | if [ ${SHELL_IS_BUSYBOX} -eq 0 ]; then
|
1353 |
| - if [ -d ${CHECKFILE} ]; then |
1354 |
| - DATA=$(${FINDBINARY} ${CHECKFILE} -maxdepth 0 -printf "%m") |
1355 |
| - else |
1356 |
| - DATA=$(${FINDBINARY} ${CHECKFILE} -printf "%m") |
1357 |
| - fi |
| 1361 | + DATA=$(${FINDBINARY} "${CHECKFILE}" ${MAXDEPTH} -printf "%m") |
| 1362 | + else |
| 1363 | + DATA=$(${FINDBINARY} "${CHECKFILE}" ${MAXDEPTH} -exec stat -c %a {} \;) |
1358 | 1364 | fi
|
1359 | 1365 | ;;
|
1360 | 1366 | esac
|
|
1872 | 1878 | # FreeBSD: hw.hv_vendor (remains empty for VirtualBox)
|
1873 | 1879 | # NetBSD: machdep.dmi.system-product
|
1874 | 1880 | # OpenBSD: hw.product
|
1875 |
| - FIND=$(sysctl -a 2> /dev/null | grep -E "(hw.product|machdep.dmi.system-product)" | head -1 | sed 's/ = /=/' | awk -F= '{ print $2 }') |
| 1881 | + FIND=$(sysctl -a 2> /dev/null | grep -E "(hw.product|machdep.dmi.system-product)" | head -n 1 | sed 's/ = /=/' | awk -F= '{ print $2 }') |
1876 | 1882 | if [ ! "${FIND}" = "" ]; then
|
1877 | 1883 | SHORT="${FIND}"
|
1878 | 1884 | fi
|
|
3049 | 3055 | # By default remove only control characters
|
3050 | 3056 | if [ $# -eq 1 ]; then
|
3051 | 3057 | input="$1"
|
3052 |
| - cleaned=$(echo ${input} | tr -d '[:cntrl:]') |
| 3058 | + # cleaned=$(echo ${input} | tr -d '[:cntrl:]') |
| 3059 | + cleaned=$(echo "$input" | sed 's/[^a-zA-Z0-9_-]//g') |
3053 | 3060 | # If know what to test against, then see if input matches the specified class
|
3054 | 3061 | elif [ $# -eq 2 ]; then
|
3055 | 3062 | input="$1"
|
|
0 commit comments