Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: marty 01. 11. 2012, 03:23:49

Název: Bash - WOL skript
Přispěvatel: marty 01. 11. 2012, 03:23:49
Ahoj, řeším následující problém...

Z cronu spouštím skript wakeup.sh. A za skriptem mám jaké PC budu chtít zapnout.
Kód: [Vybrat]
55 1 * * * /cesta/ke/scriptu/wakeup.sh JMENOPOCITACE1
Kód: [Vybrat]
#!/bin/bash
JMENOPOCITACE1="AA:BB:CC:DD:EE:F1"
JMENOPOCITACE2="AA:BB:CC:DD:EE:F2"

for pc in "$@"
do
  echo $pc
  wakeonlan $pc
done

Když skript zavolám, tak
Kód: [Vybrat]
./wapeup.sh JMENOPOCITACE1výsledek je:
Kód: [Vybrat]
wakeonlan JMENOPOCITACE1
Ale já bych potřeboval aby se skript provedl takto:
Kód: [Vybrat]
wakeonlan MACADRESAPOCITACE
Zkoušel jsem třeba:
Kód: [Vybrat]
wakeonlan $($pc)Tak to ale nejde.


Předem díky za jakoukoli radu :-)
Název: Re:Bash - WOL skript
Přispěvatel: kozec 01. 11. 2012, 03:33:29
Kód: [Vybrat]
mac=$(eval echo \$$pc)
echo $mac

... napriklad
Název: Re:Bash - WOL skript
Přispěvatel: DgBd 01. 11. 2012, 09:50:39
Bash už umí asociativní pole, takže třeba
Kód: [Vybrat]

declare -A PC
PC[karel]="AA:BB:CC"
PC[pepa]="EE:FF:00"

echo ${PC[karel]}
Název: Re:Bash - WOL skript
Přispěvatel: kagro 01. 11. 2012, 20:03:45
Alebo skusit nieco taketo:

#!/bin/bash
JMENOPOCITACE1="AA:BB:CC:DD:EE:F1"
JMENOPOCITACE2="AA:BB:CC:DD:EE:F2"

for pc in "$@"
do
  echo ${!pc}
done