luiluiboy014
Anmeldungsdatum: 4. Februar 2018
Beiträge: 19
|
hallo leute kann mir einer helfen mit shell script haben ein kleines Problem ist lxc hdd abfrage hier mein problem
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | if [[ "$3" = "hdd" || "$3" = "all" ]]; then
FREE="`pct exec $2 df | grep /dev/loop0`"
SIZE=$( echo "$FREE" | awk '{print $2}' )
USED=$( echo "$FREE" | awk '{print $3}' )
AVAI=$( echo "$FREE" | awk '{print $4}' )
PERC=$( echo "$FREE" | awk '{print $5}' )
if [ "$3" != "all" ]; then
return_info="$SIZE,$USED,$AVAI,$PERC"
else
HDD="$SIZE,$USED,$AVAI,$PERC"
fi
fi
In info line 215:
FREE="`pct exec $2 df (%) | grep /dev/loop0`"
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2086: Double quote to prevent glo bbing and word splitting.
|
hoffe ihr könnt mir da helfen
Bearbeitet von Cruiz: Hilferufe aus dem Titel entfernt.
|
Bleys
Anmeldungsdatum: 13. August 2006
Beiträge: 6172
|
luiluiboy014 schrieb: hallo leute kann mir einer helfen mit shell script haben ein kleines Problem ist lxc hdd abfrage hier mein problem if [[ "$3" = "hdd" || "$3" = "all" ]]; then
FREE="`pct exec $2 df | grep /dev/loop0`"
SIZE=$( echo "$FREE" | awk '{print $2}' )
USED=$( echo "$FREE" | awk '{print $3}' )
AVAI=$( echo "$FREE" | awk '{print $4}' )
PERC=$( echo "$FREE" | awk '{print $5}' )
if [ "$3" != "all" ]; then
return_info="$SIZE,$USED,$AVAI,$PERC"
else
HDD="$SIZE,$USED,$AVAI,$PERC"
fi
fi
In info line 215:
FREE="`pct exec $2 df (%) | grep /dev/loop0`"
^-- SC2006: Use $(..) instead of legacy `..`.
^-- SC2086: Double quote to prevent glo bbing and word splitting.
hoffe ihr könnt mir da helfen
Kann bestimmt jemand hier. Allerdings solltest Du schon richtig posten. Z.B. Codeblocks verwenden. Und dann sagt Dir die Fehlermeldung doch eigentlich schon was Du tun sollst ( und in den darauf folgenden Zeilen auch richtig gemacht hast). Bei SIZE, USED, AVAI und PERC nutzt Du $(..), warum machst Du das für FREE anders?
|
luiluiboy014
(Themenstarter)
Anmeldungsdatum: 4. Februar 2018
Beiträge: 19
|
verstehe ich jetzt nicht können sie mir beispiel machen bitte
|
Bleys
Anmeldungsdatum: 13. August 2006
Beiträge: 6172
|
FREE="`pct exec $2 df (%) | grep /dev/loop0`" ändern zu FREE=$( pct exec $2 df (%) | grep /dev/loop0 )
|
luiluiboy014
(Themenstarter)
Anmeldungsdatum: 4. Februar 2018
Beiträge: 19
|
Jetzt bekomme ich jetzt das
| In info line 215:
FREE=$( pct exec $2 df (%) | grep /dev/loop0 )
^-- SC1073: Couldn't parse this command expansion.
^-- SC1009: The mentioned parser error was in this command expansion.
^-- SC1036: '(' is invalid here. Did you forget to escape it?
^-- SC1072: Expected end of $(..) expression. Fix any mentioned problems and try again.
|
|
Bleys
Anmeldungsdatum: 13. August 2006
Beiträge: 6172
|
Hmm.. pct scheint zu Deiner LXC Umgebung zu gehören. Keine Ahnung was dieser Befehl macht. Da musst Du schon erheblich mehr an Informationen liefern damit jemand helfen kann.
|
luiluiboy014
(Themenstarter)
Anmeldungsdatum: 4. Februar 2018
Beiträge: 19
|
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 | if [ "$1" = "LXC" ]; then
Status_VS "$1" "$2" "$3"
STATUS="$return_status"
if [ "$return_status" = "RUNNING" ]; then
if [[ "$3" = "uptime" || "$3" = "all" ]]; then
UPT0=$"`pct exec $2 uptime`"
UPT1=$( echo "$UPT0" | awk -F"up " '{print $2}' | awk -F"load" '{print $1}' )
UPT2=$( echo "$UPT1" | sed -e 's/,//g' )
UPT3=$( echo "$UPT2" | awk -F" " '{print $1}' )
UPT4=$( echo "$UPT3" | cut -d" " -f2 )
if [ "$UPT4" = "min" ]; then
UPT5=$( echo "$UPT3" | cut -d" " -f1 )
if [ "$3" != "all" ]; then
return_info="0,0,$UPT5,0"
else
UPTIME="0,0,$UPT5,0"
fi
fi
if [[ "$UPT4" = "day" || "$UPT4" = "days" ]]; then
UPT5=$( echo "$UPT3" | cut -d" " -f1 )
UPT6=$( echo "$UPT3" | cut -d" " -f3 )
UPT7=$( echo "$UPT6" | cut -d":" -f1 )
UPT8=$( echo "$UPT6" | cut -d":" -f2 )
if [ "$3" != "all" ]; then
return_info="$UPT5,$UPT7,$UPT8,0"
else
UPTIME="$UPT5,$UPT7,$UPT8,0"
fi
fi
if [[ "$UPT4" != "min" && "$UPT4" != "day" && "$UPT4" != "days" ]] ; then
UPT5=$( echo "$UPT3" | cut -d":" -f1 )
UPT6=$( echo "$UPT3" | cut -d":" -f2 )
if [ "$3" != "all" ]; then
return_info="0,$UPT5,$UPT6,0"
else
UPTIME="0,$UPT5,$UPT6,0"
fi
fi
fi
if [[ "$3" = "ram" || "$3" = "all" ]]; then
FREE="`pct exec $2 free | head -n 2 | tail -n 1`"
SIZE=$( echo "$FREE" | awk '{print $2}' )
USED=$( echo "$FREE" | awk '{print $3}' )
AVAI=$( echo "$FREE" | awk '{print $4}' )
if [ "$3" != "all" ]; then
return_info="$SIZE,$USED,$AVAI"
else
RAM="$SIZE,$USED,$AVAI"
fi
fi
if [[ "$3" = "cpu" || "$3" = "all" ]]; then
if [ "$3" != "all" ]; then
return_info="0"
else
CPU="0"
fi
fi
if [[ "$3" = "swap" || "$3" = "all" ]]; then
FREE="(pct exec $2 free | tail -n 1 | head -1)"
SIZE=$( echo "$FREE" | awk '{print $2}' )
USED=$( echo "$FREE" | awk '{print $3}' )
AVAI=$( echo "$FREE" | awk '{print $4}' )
if [ "$3" != "all" ]; then
return_info="$SIZE,$USED,$AVAI"
else
SWAP="$SIZE,$USED,$AVAI"
fi
fi
if [[ "$3" = "hdd" || "$3" = "all" ]]; then
FREE=$( pct exec $2 df (%) | grep /dev/loop0 )
SIZE=$( echo "$FREE" | awk '{print $2}' )
USED=$( echo "$FREE" | awk '{print $3}' )
AVAI=$( echo "$FREE" | awk '{print $4}' )
PERC=$( echo "$FREE" | awk '{print $5}' )
if [ "$3" != "all" ]; then
return_info="$SIZE,$USED,$AVAI,$PERC"
else
HDD="$SIZE,$USED,$AVAI,$PERC"
fi
fi
if [ "$3" = "status" ]; then
return_info="$STATUS"
fi
if [ "$3" = "all" ]; then
return_info="$STATUS|$UPTIME|$HDD|$RAM|$SWAP|$CPU"
fi
else
return_info="NOK"
fi
fi
|
|
Bleys
Anmeldungsdatum: 13. August 2006
Beiträge: 6172
|
In einem Proxmox oder LXC Forum ist die Wahscheinlichkeit auf Hilfe wesentlich gößer! pct exec ist anscheinend ähnlich wie ssh mit Einschränkungen. Soweit ich das verstehe liegt es an dem Client System auf dem Du das ausführst, das es im Orginal nicht funktioniert. Wahrscheinlich musst Du pct mitgeben das df in /bin/sh ausgeführt werden soll. Da passt aber dann auch wieder der mitgegebene Parameter (%) nicht. Wie schon gesagt: Such Dir ein entsprechendes Forum mit Experten zu LXC/Proxmox Ich kann da nicht weiter helfen, sorry.
|
luiluiboy014
(Themenstarter)
Anmeldungsdatum: 4. Februar 2018
Beiträge: 19
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Bleys schrieb: FREE="`pct exec $2 df (%) | grep /dev/loop0`" ändern zu FREE=$( pct exec $2 df (%) | grep /dev/loop0 )
Hm. Das (%) steht nur in der Fehlermeldung, nicht aber im Script (1. Script, Zeile 2 im Forum). Dementsprechend müsste die Scriptzeile nicht
FREE=$( pct exec $2 df (%) | grep /dev/loop0 )
sondern
FREE=$(pct exec $2 df | grep /dev/loop0)
heißen - probier das doch mal. Ich weiß nicht, was in $2 steht/stehen kann, evtl. sollte das "$2" heißen:
FREE=$(pct exec "$2" df | grep /dev/loop0)
Ich kenne aber weder pct noch LXC.
|
Bleys
Anmeldungsdatum: 13. August 2006
Beiträge: 6172
|
user_unknown schrieb:
Hm. Das (%) steht nur in der Fehlermeldung, nicht aber im Script (1. Script, Zeile 2 im Forum). Dementsprechend müsste die Scriptzeile nicht
Stimmt, ich werde älter 😉 Danke! Ich kenne aber weder pct noch LXC.
dito
|