Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: karlitos 18 Prosince 2008, 11:58:47
-
Zdravím
Potřeboval bych si pro HTPC udělat skript, který se při bootu podívá po keyfile na usb-flashdisku a v případě že ho nenajde se dotáže na heslo.Pokud není heslo zadané do 10ti sekund bude v bootu pokračovat.
Tedy něco ve smyslu :
...
during the boot DO
IF (keyfile on /media/usb present)
THEN mount truecrypt volume on /.../...
ELSE
check for password
timeout 10sec
IF (password set correctly)
THEN mount truecrypt volume on /.../...
ELSE
do normal boot
END
Ty příkazy pro truecrypt znám, jen neumím pograovat skripty a nevím jak to udělat aby se startovaly při bootu.
Díky moc za pomoc ! K
-
man bash
man ksh
man csh
### ^^ vyber si
-
:-\
Jasně nebo můžu zkusit :
GoTo ČVUT/FEL
For 1:End DO
Learn everything
endfor
Jasně že když si to všechno nastuduju tak se tady nemusím ptát, jenže mi přijde neúčelné věnovat několik desítek hodin studia a pokusů jednomu skriptu. Když jdete k kékaři , taky vám ofotí příručku ?
-
ne, bohuzel ti musim rict, ze ty spis potrebujes placenou podporu a nebo nejakeho hodneho hocha/devce, ktery ti upece tve reseni na miru ..
ps. to co chces je velice primitivni zalezitost a verim, ze kdyz si najdes trebas nejaky cesky psany tutorial, tak to mas do hodiny vyreseno ..
-
Kdybych hctěl řešení na míru tak nebudu uvádět že o trecryptu vím svoje. Jenže ouha - tam jsem na jejich fóru nic podobného nenašel. Jde mi jen o tu obálku , jelikož o programování v bashi neovládám.
A když je to tak primitivní záležitost tak proč tedy zcela primitivně nenapsat řešení místo mravouky ? Na návody pro startovní skripty jsem se díval , myslím že bych dal dohromady i kam je nahraát , jenže to už končí u toho : if ... somefile present ... nebo u časomíry - tak to do hodiny žádný začátečník nedá.
-
#!/bin/bash
while :; do
if [ -f /path/to/keyfile ]; then
PASSWORD=`cat keyfile | sed 1!d`; ## heslo je na prvnim radku souboru
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password file && exit; ## pripadne misto exit `mv /path/to/keyfile{,bad}`, potom se cyklus neukonci a dotaze se
else
echo gimme password or ctrl+c;
read -s -t 5 PASSWORD || exit;
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password;
fi
done
-
Pro někoho kdo je zvyklej na
do{
...
}while(podminka);
nebo
while(podminka)
{
...
}
jo ;D
-
@Viper
#!/bin/bash
while :; do
if [ -f /path/to/keyfile ]; then
PASSWORD=`cat keyfile | sed 1!d`; ## heslo je na prvnim radku souboru
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password file && exit; ## pripadne misto exit `mv /path/to/keyfile{,bad}`, potom se cyklus neukonci a dotaze se
else
echo gimme password or ctrl+c;
read -s -t 5 PASSWORD || exit;
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password;
fi
done
<< moc rad se cituju .. ;)
-
@Viper
#!/bin/bash
while :; do
if [ -f /path/to/keyfile ]; then
PASSWORD=`cat keyfile | sed 1!d`; ## heslo je na prvnim radku souboru
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password file && exit; ## pripadne misto exit `mv /path/to/keyfile{,bad}`, potom se cyklus neukonci a dotaze se
else
echo gimme password or ctrl+c;
read -s -t 5 PASSWORD || exit;
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password;
fi
done
<< moc rad se cituju .. ;)
Nejsem slepej... teda jsem, ale ne zas tolik... ;D Jináč tadle syntaxe mi holt nevyhovuje moc, ale co s tím naděláme že...jináč samozřejmě zápis jsem já pochopil... bylo to jakýsi povzdech ::)
-
Panové mnohokrát děkuji za Vaši odbornou pomoc. Otestuji a pokud to bude dobře fungovat, určitě to pomůže nejen mně ale i jiným. Toto téma původně vzniklo n fóru XBMC a vyvolalo celkem zájem.
Jenom drobné opravy - keyfile je v tomto případě jakýkoliv soubor (obrázek , text ...), tedy nemusí se získávat jeho obsah. A co se stane pokud heslo není zadáno správně ? Přeruší se odpočet a nebo jede dál ?
Stačí tedy : #!/bin/bash
while :; do
if [ -f /path/to/keyfile ]; then
mount_truecript_volume_command && exit; ## heslo je $PASSWORD
echo no keyfile for truecrypt found && exit; ## pripadne misto exit `mv /path/to/keyfile{,bad}`
else
echo gimme password or ctrl+c;
read -s -t 5 PASSWORD || exit;
mount_truecrip_volume_command && exit; ## heslo je $PASSWORD
echo bad password;
fi
done
?
-
co je spatneho na ::
while true; do
block();
done
oproti ::
do {
block();
} while true
^^^ ktere v bashi NEFUNGUJE !!! .. hahaha ;)
-
@karlitos ..
ne, bude se dotazovat tak dlouho, dokud se spravne neprijoji oddil (tedy spravne heslo), nezmackne ctrl+c a nebo se nenecha 5sec vytimeoutovat ..
-
Je mi známo, že nefunguje...
není na tom špatného nic... jde jen o "zlozvyk"....
PS: to moje musí mít true v závorkách ;D jinak taky nefunguje ;D
-
Je mi známo, že nefunguje...
není na tom špatného nic... jde jen o "zlozvyk"....
PS: to moje musí mít true v závorkách ;D jinak taky nefunguje ;D
.. aha .. tak v tom pripade 1:0 pro Tebe .. dostal jsi me .. docela me prekvapuje, ze to nejde ani v /bin/csh
ps. ted to asi nechapu, ale ani true v zavorkach tomu nepomaha ..
-
No spíš se zajmám o C/C++ nebo PHP ;) a tam podmínka musí být v závorkách. Vím, že jsi vcelku expert na bash... tak jsem si povzdechl, že se bash syntaxe trochu rozchází (naštěstí logika je zachována). :'(
-
No spíš se zajmám o C/C++ nebo PHP ;) a tam podmínka musí být v závorkách. Vím, že jsi vcelku expert na bash... tak jsem si povzdechl, že se bash syntaxe trochu rozchází (naštěstí logika je zachována). :'(
:D rofl .. nemyslim si, ze jsem expert na bash. akorat ho uz par let spolu s Linuxem pouzivam (tak nejak mimodek) ;) .. stejne jako ty je me pracovni/osobni zamereni na c/c++ a perl
-
No to já to mám prozatím jenom jako koníčka... :)
-
Napsal jsem si tohle:
#!/bin/bash
if test -e /media/ext_disk/volume.tc
then
truecrypt -t /media/ext_disk/volume.tc /media/truecrypt1 -k file.key -p ' ' --protect-hidden=no
echo "OK"
else
echo "No found file /media/ext_disk/volume.tc"
exit
fi
..a funguje kdyz to rucne spustim. Ovsem problem je, ze kdyz to pridam do programu spustene po prihlaseni, tak se nic nestane, protoze IMO v dobe spousteni tohodle skriptu neni namountovany ani externi disk (/media/ext_disk/)
Ma nekdo napad, jak
a) zaridit, aby se tento skript spoustel uplne jako posledni
b) neco jineho? udev?