Zdarec,
na serveru se nam vyskytla podivna chyba: mame k dispozici pouze dva BASHe a
zadne externi programy nefunguji (ani cat, ls, ...).
Potrebujeme vsak zkopirovat binarni knihovnu, ale mame k dispozici JEN
interni funkce bashe. Ani dalsi bash nelze spustit.
Napadne nekoho neco?
Zatim jsme dokonvergovali k nasledujicimu (ls je binarni kopirovany soubor):
export IFS="" ; while read -r -n 1 radka; do printf "%c" "$radka"; done <
ls > ls2
ale tohle reseni nezapise znaky 0a (a mozna nejake jine)
potom jsme jeste objevili nacteni souboru do promenne:
a=$(<ls) ale zapsat obsah te promenne do souboru tak, aby odpovidala
originalnimu ls se nepovedlo
diky,
Vlákno názorů k článku
Hrátky z řádky: první krůčky při programování v Bashi
uživatel si přál zůstat v anonymitě
17. 3. 2008 11:01
Re: Kopirovani bin. soub. v BASHi
Doporucil bych staticky "cat"
17. 3. 2008 14:41
Re: Kopirovani bin. soub. v BASHi
BASH dokaze otevrit soubor a pracovat s nim pomoci jeho FD:
Mohu doporucit pouzit google: http://blogmag.net/blog/read/48/File_descriptors_in_shell
i bashar zacatecnik si pak uz pak snadno dopise funkce jako cat(), cp() a pod bez pouziti externich binarek... BTW sem si vzdycky myslel, ze BASH ma nektery prikazy (jako treba cp nebo cat) este redundantne ve svoji implementaci primo v sobe, aby to bylo rychlejsi... ale nevim.
Coz ovsem neznamena, ze si tady hned musim delat reklamu: http://blog.harvie.ath.cx/ ;+D
Mohu doporucit pouzit google: http://blogmag.net/blog/read/48/File_descriptors_in_shell
i bashar zacatecnik si pak uz pak snadno dopise funkce jako cat(), cp() a pod bez pouziti externich binarek... BTW sem si vzdycky myslel, ze BASH ma nektery prikazy (jako treba cp nebo cat) este redundantne ve svoji implementaci primo v sobe, aby to bylo rychlejsi... ale nevim.
Coz ovsem neznamena, ze si tady hned musim delat reklamu: http://blog.harvie.ath.cx/ ;+D
17. 3. 2008 15:01
Re: Kopirovani bin. soub. v BASHi
v zaveru sem se s tim popral takhle:
harvie@harvie-ntb:~/Work/butils$ source tinyutils.bash
harvie@harvie-ntb:~/Work/butils$ tinycat tinyutils.bash
#!/bin/bash
tinycat() {
if [ -a "$1" ]; then
exec 6<"$1";
while read line <&6; do
echo "$line";
done;
exec 6<&-;
else echo 'FNF!' > /dev/stderr
fi;
}
harvie@harvie-ntb:~/Work/butils$ tinycat not_found
FNF!
harvie@harvie-ntb:~/Work/butils$
staci pres > presmerovat do souboru a muzes kopcit...
harvie@harvie-ntb:~/Work/butils$ source tinyutils.bash
harvie@harvie-ntb:~/Work/butils$ tinycat tinyutils.bash
#!/bin/bash
tinycat() {
if [ -a "$1" ]; then
exec 6<"$1";
while read line <&6; do
echo "$line";
done;
exec 6<&-;
else echo 'FNF!' > /dev/stderr
fi;
}
harvie@harvie-ntb:~/Work/butils$ tinycat not_found
FNF!
harvie@harvie-ntb:~/Work/butils$
staci pres > presmerovat do souboru a muzes kopcit...
17. 3. 2008 17:08
Re: Kopirovani bin. soub. v BASHi
Taky sem uz prisel na to, jak je to s tema vnitrnima prikazama:
jestli nemas /bin/echo, tak prepis echo na builtin echo:
harvie@harvie-ntb:~/Work/butils$ builtin echo foo
foo
jestli nemas /bin/echo, tak prepis echo na builtin echo:
harvie@harvie-ntb:~/Work/butils$ builtin echo foo
foo
aaa (neregistrovaný)
17. 3. 2008 16:37
Re: Kopirovani bin. soub. v BASHi
ono pred par rokmi sa nam v praci (u zakaznika) vyskytla podobna "chyba" - neslo otvarat nove terminaly, ani login etc. prislo sa na to ze nam hackli server... tak pozor ;-)
matej (neregistrovaný)
18. 3. 2008 18:29
Re: Kopirovani bin. soub. v BASHi
Uplne staci, ked si odfajcis glibc, resp. nainstalujes glibc, ktore je napriklad nekompatibilne s aktualne beziacim kernelom. To potom nespustis nic, co uz nemas spustene, resp. co nie je staticky nalinkovane.
(To uz treba len dufat, ze ta bashova ssh konzola nespadne, kym nahodis nazad funkcne glibc.)
(To uz treba len dufat, ze ta bashova ssh konzola nespadne, kym nahodis nazad funkcne glibc.)
pht (neregistrovaný)
23. 3. 2008 10:09
Re: Kopirovani bin. soub. v BASHi
nekdy staci na vyreseni takoveho problemu pouzit
/lib/ld-linux.so.2 , napr. /lib/ld-linux.so.2 /bin/cp neco nekam...

