Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
saxandl
- Beiträge: 118
- Registriert: 06.09.2011 07:17:00
Beitrag
von saxandl » 20.05.2014 15:34:52
hallo!
kann mir jms bei der erstellung eines bash-scrips behilflich sein?
hier kurz worum es geht:
auf der console wird mit dem befehl "vim-cmd vmsvc/getallvms" die liste aller vm's ausgegeben, und zwar in der folgenden Form:
Code: Alles auswählen
Vmid Name ...
1 ipfire.192.168.1.2 ...
10 ipfire.192.168.1.3 ...
12 xterm_192.168.1.43@192.168.1.3 ...
13 ipfire.192.168.1.1 ...
14 vSphere Management Assistant (vMA) ...
19 CentOS 5.5 64-bit ...
22 cloud_192.168.1.44@192.168.1.1 ...
31 EasySCP_192.168.1.55@192.168.1.2 ...
33 ipfire.192.168.1.4 ...
39 FreePBX v.1.20 ...
4 svc_mode_54 ...
5 svc_mode_61 ...
Das script soll nun die Zahlen am anfang der Zeilen (erste Zeile Überschrift) in eine variable übernehmen und je zahl den Befehl
absetzen.
-
uname
- Beiträge: 12403
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 20.05.2014 16:22:40
Nicht probiert:
Code: Alles auswählen
for i in $(vim-cmd vmsvc/getallvms |cut -d" " -f1 |grep -v "Vmid" );do echo $i;done
for i in $(vim-cmd vmsvc/getallvms |cut -d" " -f1 |grep -v "Vmid" );do vim-cmd vmsvc/power.suspend $i;done
Evtl. musst du den cut-Befehl auf andere Trennzeichen umstellen. Die erste Zeile ist nur der Test der einzelnen Nummern. Auch weiß ich nicht ob das mit den Slashes und Leerzeichen alles funktioniert.
-
habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von habakug » 20.05.2014 16:32:08
Hallo!
Ungetestet:
Code: Alles auswählen
for i in `vim-cmd vmsvc/getallvms | cut -d ' ' -f 1`; do vim-cmd vmsvc/power.suspend $i; done
Gruss, habakug
-
saxandl
- Beiträge: 118
- Registriert: 06.09.2011 07:17:00
Beitrag
von saxandl » 20.05.2014 17:44:34
Hallo habakug!
Vielen Dank - der syntax passt.
lässt sich noch die erste Zeile der Ausgabe von eliminieren oder der do-befehl darauf beschränken, dass er nur ausgeführt wird, wenn $i eine zahl abbildet?
-
habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von habakug » 20.05.2014 17:55:28
Hallo!
Ja, wie @uname schon eingebaut hat, noch ein "grep -v ..." einfügen:
Code: Alles auswählen
for i in `vim-cmd vmsvc/getallvms | cut -d ' ' -f 1 | grep -v Vmid`; do vim-cmd vmsvc/power.suspend $i; done
dann wirft er diese Zeile weg.
Gruss, habakug