summaryrefslogtreecommitdiff
path: root/nfs/scripts/funcs.sh
blob: 3d0d8491b8e579c2cad2a8b49443aa8d40a5b750 (plain)
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
# no args, let the user read useful informations on console (or skip with Enter)
pause10s() {
	sfx_question # sfx_* comes from /etc/rc.d/funcs helpers
	read -t10 -p 'Press Enter or wait 10 sec...'
	# Make some blank lines on console
	echo -e '\n\n\n\n\n'
}

# no args, print colored message, returns 0 if hostname seems valid, returns 1 if hostname is a default one
hostname_test() {
	BADNAME='echo_color white red ">>> hostname should not contain special characters or should not be FQDN : $hostname"'
	# This test is for security concern, hostname will be used as shell arg
	case $hostname in
		"(none)"|eficast|"")	echo_color white red ">>> hostname is not customized : $hostname" ; return 1 ;;
		*\&*)			$BADNAME; return 2 ;;
		*\(*)			$BADNAME; return 2 ;;
		*\{*)			$BADNAME; return 2 ;;
		*\;*)			$BADNAME; return 2 ;;
		*\<*)			$BADNAME; return 2 ;;
		*\`*)			$BADNAME; return 2 ;;
		*\ *)			$BADNAME; return 2 ;;
		*)			echo_color green black ">>> hostname is $hostname" ; return 0 ;;
	esac
}

# no args, print colored message, returns 0 if NFS is read-only, returns 1 if NFS is read-write (needed for image capture)
nfswrite_test() {
	if ! touch /mnt/nfs/.writetest
	then	echo_color green black ">>> NFS is read-only"
		return 0
	else	echo_color white blue ">>> NFS is read-write"
		return 1
	fi
}

firstdisk() {
	# "sort", so we have nvme, then sata, then usb
	lsblk -dnl --output TRAN,PATH | sort | head -n1 | awk '{print $2}'
}

firstdiskp() {
	# $1 : disk devnode path as return by firstdisk()
	echo "$1" | grep -q '[0-9]$' && echo "${1}p" || echo "$1"
}

# no args, print colored message, returns 0 if sda is present and is sata, returns >0 if it is not
firstdisk_test() {
	diskinfo=$(lsblk -dnl --output TRAN,MODEL "$1")
	case $diskinfo in
		nvme*)	echo_color green black ">>> First disk is NVMe and is available ($diskinfo)"
		return 0
		;;
		sata*)	echo_color green black ">>> First disk is SATA and is available ($diskinfo)"
		return 0
		;;
		usb*)	echo_color white red ">>> First disk is USB ($diskinfo)"
		return 1
		;;
		*)	echo_color white red ">>> First disk is unknown ($diskinfo)"
		return 2;
		;;
	esac
}

# $1 : scriptname, print colored message, returns 0 script is available, returns 1 if not
scriptavailability_test() {
	script=$scriptdir/$1
	if [ -r $script ]
	then	echo_color green black ">>> Script $script is available"
		return 0
	else	echo_color white blue ">>> Script $script is missing or unreadable"
		return 1
	fi
}

# $1 : scriptname, print colored message, returns 0 script is available, returns 1 if not
diravailability_test() {
	dir=$1
	if [ -d $dir ]
	then	echo_color green black ">>> Image $dir is available"
		return 0
	else	echo_color white blue ">>> Image $dir is missing or unreadable"
		return 1
	fi
}