-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsystem
More file actions
88 lines (78 loc) · 2.84 KB
/
Copy pathsystem
File metadata and controls
88 lines (78 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
function generate_unique_id {
ID_PREFIX=$1
[ "" == "${INTERFACE}" ] && INTERFACE=$(ifconfig | grep "^eth" | awk '{print $1}')
[ "" == "${INTERFACE}" ] && INTERFACE=$(ifconfig | grep "^em" | awk '{print $1}')
[ "" == "${INTERFACE}" ] && INTERFACE=$(ifconfig | grep "^wlan" | awk '{print $1}')
if [ "" == "${INTERFACE}" ]; then
echo "${ID_PREFIX}-xxxxxx"
else
MAC=$(ifconfig ${INTERFACE} | grep HWaddr | grep ${INTERFACE} | sed 's/.*HWaddr //g' | sed 's/://g' | sed 's/\ //g')
echo "${ID_PREFIX}-${MAC}"
fi
}
function read_bbb_id {
# BeagleBone-Black
#
local EEPROM="/sys/bus/i2c/devices/1-0050/eeprom"
[ ! -f "${EEPROM}" ] && EEPROM="/sys/bus/i2c/devices/0-0050/eeprom"
# BeagleBone-Green
#
[ ! -f "${EEPROM}" ] && EEPROM="/sys/bus/i2c/devices/0-0050/at24-0/nvmem"
if [ ! -f "${EEPROM}" ]; then
echo ""
else
local SERIAL=$(hexdump -e '8/1 "%c"' "${EEPROM}" -s 16 -n 12 2>&1)
echo "${SERIAL}"
fi
}
function read_rpi2_id {
ID_PREFIX="rpi2"
if [ "" == "$(cat /proc/cpuinfo | grep Hardware | grep BCM2709)" ]; then
echo ""
else
echo "${ID_PREFIX}-$(grep -Po '^Serial\s*:\s*\K[[:xdigit:]]{16}' /proc/cpuinfo | sed 's/\ //g')"
fi
}
function find_unique_id {
if [ "" != "$(virt-what)" ]; then
generate_unique_id "vm"
else
ID="$(read_bbb_id)"
[ "" == "${ID}" ] && ID="$(read_rpi2_id)"
[ "" == "${ID}" ] && ID="$(generate_unique_id "devboard")"
echo ${ID}
fi
}
function initiate_linux_os_variables {
initiate_os_variables
}
function read_mac_osx_codename {
grep "SOFTWARE LICENSE AGREEMENT FOR OS X" \
"/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf" \
| sed -E 's/^SOFTWARE LICENSE AGREEMENT FOR OS X (.+)\\$/\1/' \
| tr "[A-Z]" "[a-z]" \
| tr ' ' '_'
}
function initiate_os_variables {
export OS_KERNEL=$(uname -s | tr "[A-Z]" "[a-z]")
[ "darwin" == "${OS_KERNEL}" ] && export OS_DIST_NAME="macosx" || export OS_DIST_NAME=$(lsb_release -a 2>/dev/null | grep "^Distributor" | awk '{print $3}' | tr "[A-Z]" "[a-z]")
[ "darwin" == "${OS_KERNEL}" ] && export OS_DIST_CODENAME="" || export OS_DIST_CODENAME=$(lsb_release -a 2>/dev/null | grep "^Codename" | awk '{print $2}' | tr "[A-Z]" "[a-z]")
[ "darwin" == "${OS_KERNEL}" ] && export HW_CPUS=$(sysctl -n hw.physicalcpu_max) || export HW_CPUS=$(nproc)
export OS_ARCH=$(uname -m | tr "[A-Z]" "[a-z]")
export OS_NAME="${OS_KERNEL}-${OS_DIST_NAME}-${OS_DIST_CODENAME}"
[ "" == "${OS_DIST_CODENAME}" ] && export OS_NAME="${OS_KERNEL}-${OS_DIST_NAME}"
}
# Used by bbb-gen-image to produce architecture-specific
# system variables.
#
function generate_os_variable_dump {
local OUTPUT=$1
[ "" == "${OUTPUT}" ] && OUTPUT="/opt/system"
initiate_os_variables
rm -f ${OUTPUT}
for v in OS_KERNEL OS_DIST_NAME OS_DIST_CODENAME OS_ARCH OS_NAME; do
echo -e "${v}\t${!v}" >> ${OUTPUT}
done
cat ${OUTPUT} | awk '{printf "\t%s\n", $0}'
}