Edit:
Volledig functioneel script in de volgende post:
Tiwazz in "[Rasberry Pi] Sysinfo Bash script"
Oorspronkelijk bericht:
Ik heb recentelijk een Rasberry Pi gekocht en heb hier Arch linux op gezet. Nou vond ik het leerzaam en leuk om een script te hebben waarmee ik een hoop systeem informatie in één oog opslag kan zien.
Uiteraard zijn op internet tal van dit soort scripts te vinden, echter zijn deze veelal in python en met copy-paste leer ik er niet zoveel van. Nu heb ik besloten om mijn script te maken in bash, dit omdat het dan niet nodig is om een pakket te instaleren zoals python. Ik heb nog geen ervaring met scripten in bash en zal dan misschien ook beginners fouten gemaakt hebben. Alles wat ik gebruikt heb heb ik gevonden in de --help van het commando of op het internet gevonden.
Nu heb ik mijn script zo goed als voltooid echter loop ik tegen enkele zaken aan en hoop hier een verklaring te vinden waarom dit zo is en wat ik moet doen om dit te verbeteren. Uiteraard heb ik oplossingen proberen te vinden op het internet, alleen ben hier niet in geslaagd.
Allereerst het script en daarna de console output.
Script:
Output:
Serialnumber en Mac adres heb ik gewijzigd zodat dit niet zichtbaar is.
Nou zijn er nogal wat errors en deze worden naar mijn inzien veroorzaakt doordat de uitkomst van de variable worden gelezen als commando ipv gewoon geprint. Nu heb ik van alles geprobeert om te zorgen dat echo gewoon puur alleen de regels weergeeft, maar toch lijkt het erop dat bash commando's probeert te zoeken in de regels.
Iemand een idee hoe ik dit kan verhelpen?
Probleem twee is dat onder het kopje system, hostname weergegeven wordt als "0". Dit geld ook voor Hardware onder het kopje Network.
Als 3de probleem onder het kopje Network probeer ik te controleren of de netwerk kabel is ingeplugt. Dit doe ik met een if else statement en wil als de waarde "1" is dat de variabele NET_LINK veranderd in "Connected" en als de waarde niet "1" is in "Disconnected". Hierna wil ik de variable NET_LINK gebruiken om te printen op de console wat dus de waarde Connected of Disconnected moet weergeven. Helaas werkt het niet zo en waarschijnlijk is mijn if else statement foutief, ik zie echter niet wat
.
Ik hoop dat iemand mij kan helpen met bovenstaande fouten in mijn script. Uiteraard hoor ik ook wat er verder onlogisch is en beter kan of wat ik juist goed gedaan heb. Het is namelijk mijn eerste keer met bash scripting
.
Modjes: Ik weet niet zeker of dit topic hier hoort of juist in Devschuur/Programming hoort. Volgens "Waar hoort mijn topic" hier. Mocht ik het toch mis hebben wordt ik graag verplaatst.
Volledig functioneel script in de volgende post:
Tiwazz in "[Rasberry Pi] Sysinfo Bash script"
Oorspronkelijk bericht:
Ik heb recentelijk een Rasberry Pi gekocht en heb hier Arch linux op gezet. Nou vond ik het leerzaam en leuk om een script te hebben waarmee ik een hoop systeem informatie in één oog opslag kan zien.
Uiteraard zijn op internet tal van dit soort scripts te vinden, echter zijn deze veelal in python en met copy-paste leer ik er niet zoveel van. Nu heb ik besloten om mijn script te maken in bash, dit omdat het dan niet nodig is om een pakket te instaleren zoals python. Ik heb nog geen ervaring met scripten in bash en zal dan misschien ook beginners fouten gemaakt hebben. Alles wat ik gebruikt heb heb ik gevonden in de --help van het commando of op het internet gevonden.
Nu heb ik mijn script zo goed als voltooid echter loop ik tegen enkele zaken aan en hoop hier een verklaring te vinden waarom dit zo is en wat ik moet doen om dit te verbeteren. Uiteraard heb ik oplossingen proberen te vinden op het internet, alleen ben hier niet in geslaagd.
Allereerst het script en daarna de console output.
Script:
code:
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
| #! /bin/bash # Rasberry Pi Sysinfo version 1.0 # Author: Nando Donkersloot ############### #DEFINE VALUES# ############### #CLOCKS CPU_CLOCK=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) CORE_CLOCK=$(/opt/vc/bin/vcgencmd measure_clock core | cut -d= -f2) #VOLTAGES CORE_VOLT=$(/opt/vc/bin/vcgencmd measure_volts core | cut -d= -f2) SDRAM_C_VOLT=$(/opt/vc/bin/vcgencmd measure_volts sdram_c | cut -d= -f2) SDRAM_I_VOLT=$(/opt/vc/bin/vcgencmd measure_volts sdram_i | cut -d= -f2) SDRAM_P_VOLT=$(/opt/vc/bin/vcgencmd measure_volts sdram_p | cut -d= -f2) #TEMPERATURES CPU_TEMP=$(cat /sys/class/thermal/thermal_zone0/temp) GPU_TEMP=$(/opt/vc/bin/vcgencmd measure_temp | cut -d= -f2) #FIRMWARE VERSION=$(/opt/vc/bin/vcgencmd version | grep "version" | awk '{print $2}') #SYSTEM HOSTNAME=$( uname -n) CPU_TYPE=$(sed -n '1 p' /proc/cpuinfo | cut -d: -f2) CPU_FEATURES=$(sed -n '3 p' /proc/cpuinfo | cut -d: -f2) SERIAL=$(sed -n '12 p' /proc/cpuinfo | cut -d: -f2) KERNEL=$(uname -srm) #UPTIME_CALCULATE uptime=$(</proc/uptime) uptime=${uptime%%.*} seconds=$(( uptime%60 )) minutes=$(( uptime/60%60 )) hours=$(( uptime/60/60%24 )) days=$(( uptime/60/60/24 )) UPTIME_CALCULATED=$(echo "$days days, $hours hours, $minutes minutes, $seconds seconds") #MEMORY_CALCULATE MEM_TOTAL=$(free -o | grep "Mem:" | cut -d: -f2 | awk '{print $1}') MEM_USED=$(free -o | grep "Mem:" | cut -d: -f2 | awk '{print $2}') MEM_FREE=$(free -o | grep "Mem:" | cut -d: -f2 | awk '{print $3}') MEM_SHARED=$(free -o | grep "Mem:" | cut -d: -f2 | awk '{print $4}') MEM_BUFFERS=$(free -o | grep "Mem:" | cut -d: -f2 | awk '{print $5}') MEM_CACHED=$(free -o | grep "Mem:" | cut -d: -f2 | awk '{print $6}') MEM_CALCULATED=$(echo $MEM_TOTAL Total $MEM_USED Used $MEM_FREE Free $MEM_SHARED Shared $MEM_BUFFERS Buffers $MEM_CACHED Cached) #SWAP_CALCULATE SWAP_TOTAL=$(free -o | grep "Swap:" | cut -d: -f2 | awk '{print $1}') SWAP_USED=$(free -o | grep "Swap:" | cut -d: -f2 | awk '{print $2}') SWAP_FREE=$(free -o | grep "Swap:" | cut -d: -f2 | awk '{print $3}') SWAP_CALCULATED=$(echo $SWAP_TOTAL Total $SWAP_USED Used $SWAP_FREE Free) NET_HARDWARE=$(sed -n '2 p' /sys/class/net/eth0/device/uevent | cut -d= -f2) NET_MAC=$(cat /sys/class/net/eth0/address) ####[ Not Working - Need to Fix ]############# NET_LINK=$(cat /sys/class/net/eth0/carrier) # if [$NET_LINK=1]; then # $NET_LINK='Connected' # else # $NET_LINK='Disconnected' # fi # ################################################ #NET_SPEED NET_CABLESPEED=$(cat /sys/class/net/eth0/speed) NET_DUPLEX=$(cat /sys/class/net/eth0/duplex) NET_SPEED=$(echo $NET_CABLESPEED $NET_DUPLEX 'duplex') ############## #PRINT VALUES# ############## echo echo '###[ Raspberry Pi Sysinfo ]##########################################' echo '###[ CLOCKS ]########################################################' echo CPU ....... : $(($CPU_CLOCK/1000))Mhz echo CORE ...... : $(($CORE_CLOCK/1000))Mhz echo echo '###[ VOLTAGES ]######################################################' echo CORE ....... : $(($CORE_VOLT)) echo SDRAM_I .... : $(($SDRAM_I_VOLT)) echo SDRAM_V .... : $(($SDRAM_C_VOLT)) echo SDRAM_P .... : $(($SDRAM_P_VOLT)) echo echo '###[ TEMPERATURES ]##################################################' echo CPU Temp ....... : $(($CPU_TEMP/1000))°C / 85°C echo GPU Temp ....... : $(($GPU_TEMP)) echo echo '###[ FIRMWARE ]######################################################' echo Firmware .. : $(($VERSION)) echo echo '###[ SYSTEM ]########################################################' echo Hostname .. : $(($HOSTNAME)) echo CPU ........: $(($CPU_TYPE)) echo FEATURES ...: $(($CPU_FEATURES)) echo SERIAL .....: $(($SERIAL)) echo KERNEL .....: $(($KERNEL)) echo UPTIME .....: $(($UPTIME_CALCULATED)) echo MEMORY .....: $(($MEM_CALCULATED)) echo SWAP .......: $(($SWAP_CALCULATED)) echo echo '###[ NETWORK ]#######################################################' echo Interface . : eth0 echo Hardware .. : $(($NET_HARDWARE)) echo MAC Addr .. : $(($NET_MAC)) echo Cable ..... : $(($NET_LINK)) echo Link Speed : $(($NET_SPEED)) |
Output:
code:
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
| ./sysinfo: line 68: [1#=1]: command not found ./sysinfo: line 71: 1#=Disconnected: command not found ###[ Raspberry Pi Sysinfo ]########################################## ###[ CLOCKS ]######################################################## CPU ....... : 700Mhz CORE ...... : 250000Mhz ###[ VOLTAGES ]###################################################### ./sysinfo: line 92: 1.20V: syntax error: invalid arithmetic operator (error token is ".20V") ./sysinfo: line 93: 1.20V: syntax error: invalid arithmetic operator (error token is ".20V") ./sysinfo: line 94: 1.20V: syntax error: invalid arithmetic operator (error token is ".20V") ./sysinfo: line 95: 1.23V: syntax error: invalid arithmetic operator (error token is ".23V") ###[ TEMPERATURES ]################################################## CPU Temp ....... : 51°C / 85°C ./sysinfo: line 99: 51.4'C: syntax error: invalid arithmetic operator (error token is ".4'C") ###[ FIRMWARE ]###################################################### ./sysinfo: line 102: 8b570d997388ca7989be17029f79180f98465e3c: value too great for base (error token is "8b570d997388ca7989be17029f79180f98465e3c") ###[ SYSTEM ]######################################################## Hostname .. : 0 ./sysinfo: line 106: ARMv6-compatible processor rev 7 (v6l): syntax error in expression (error token is "processor rev 7 (v6l)") ./sysinfo: line 107: swp half thumb fastmult vfp edsp java tls : syntax error in expression (error token is "half thumb fastmult vfp edsp java tls ") ./sysinfo: line 108: <serialnumber>: value too great for base (error token is "<serialnumber>") ./sysinfo: line 109: Linux 3.6.11-14-ARCH+ armv6l: syntax error in expression (error token is "3.6.11-14-ARCH+ armv6l") ./sysinfo: line 110: 0 days, 11 hours, 42 minutes, 17 seconds: syntax error in expression (error token is "days, 11 hours, 42 minutes, 17 seconds") ./sysinfo: line 111: 472844 Total 70012 Used 402832 Free 0 Shared 11416 Buffers 25156 Cached: syntax error in expression (error token is "Total 70012 Used 402832 Free 0 Shared 11416 Buffers 25156 Cached") ./sysinfo: line 112: 0 Total 0 Used 0 Free: syntax error in expression (error token is "Total 0 Used 0 Free") ###[ NETWORK ]####################################################### Interface . : eth0 Hardware .. : 0 ./sysinfo: line 117: <mac_adress>: syntax error in expression (error token is ":<mac_adress") ./sysinfo: line 118: 1#: invalid arithmetic base (error token is "1#") ./sysinfo: line 119: 100 full DUPLEX: syntax error in expression (error token is "full DUPLEX") [nando@raspberrypi .scripts]$ |
Serialnumber en Mac adres heb ik gewijzigd zodat dit niet zichtbaar is.
Nou zijn er nogal wat errors en deze worden naar mijn inzien veroorzaakt doordat de uitkomst van de variable worden gelezen als commando ipv gewoon geprint. Nu heb ik van alles geprobeert om te zorgen dat echo gewoon puur alleen de regels weergeeft, maar toch lijkt het erop dat bash commando's probeert te zoeken in de regels.
Iemand een idee hoe ik dit kan verhelpen?
Probleem twee is dat onder het kopje system, hostname weergegeven wordt als "0". Dit geld ook voor Hardware onder het kopje Network.
Als 3de probleem onder het kopje Network probeer ik te controleren of de netwerk kabel is ingeplugt. Dit doe ik met een if else statement en wil als de waarde "1" is dat de variabele NET_LINK veranderd in "Connected" en als de waarde niet "1" is in "Disconnected". Hierna wil ik de variable NET_LINK gebruiken om te printen op de console wat dus de waarde Connected of Disconnected moet weergeven. Helaas werkt het niet zo en waarschijnlijk is mijn if else statement foutief, ik zie echter niet wat
Ik hoop dat iemand mij kan helpen met bovenstaande fouten in mijn script. Uiteraard hoor ik ook wat er verder onlogisch is en beter kan of wat ik juist goed gedaan heb. Het is namelijk mijn eerste keer met bash scripting
Modjes: Ik weet niet zeker of dit topic hier hoort of juist in Devschuur/Programming hoort. Volgens "Waar hoort mijn topic" hier. Mocht ik het toch mis hebben wordt ik graag verplaatst.
Fujifilm X-T3 | XF16mm f/2.8 | XF35mm f/2.0 | Flickr: ndonkersloot