Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
Hrátky z řádky: první krůčky při programování v Bashi

Mir a B.
Mir a B. (neregistrovaný)
17. 3. 2008 10:55

Kopirovani bin. soub. v BASHi

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,
uživatel si přál zůstat v anonymitě
17. 3. 2008 11:01

Re: Kopirovani bin. soub. v BASHi

Doporucil bych staticky "cat"
Harvie aura:54
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
Harvie aura:54
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 aura:54
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
aaa
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
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.)
pht
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...
Zasílat nově přidané příspěvky e-mailem