Nejste přihlášen/a.

Přihlásit se do poradny

 

Debian - skript v terminálu

Od: nufan odpovědí: 15 změna:

Zdravím, mám napsat skript v terminálu v Debianu:

Zadání: Napište skript, který uskuteční 4 x ping na vzdálené servre, které budu specifikované v textovém souboru, každý na novém řádku. Cestu k tomuto souboru zadá uživatel. Součástí řešení nech je kontrola platnosti cesty a textová informace o probíhané činnosti.

Mé prozatimní řešení je na obrázku. Jak dál, co mi tam chybí a tak, aby to fungovalo? Prý tam mám doplnit ještě zacylení či co před ten příkaz while, ale netuším co a jak.

Navíc jak zadám název(či cestu k souboru), tak to neprojde tím IFem - nejde číst...mám to ve složce home/lukas/lukas a jmenuje se to servery.txt

Díky moc za rady!


Debian - skript v terminálu

 

 

15 odpovědí na otázku
Řazeno dle hodnocení

 

 

nufan
hodnocení

*zacyklení

luke237
Spise nez "zacyleni"nebo "zacykleni"by to melo byt "zacileni", tedy prirazeni zdroje, ze ktereho ten read cte. Bez parametru cte/... a protoze ten nemas presmerovany, tak u tebe je to porad /dev/stdin (nejcasteji klavesnice).

 

luke237
hodnocení

0x
Na promennou se musis odkazovat "$promenna" (tedy if ! -f $soubor), stejne jako to mas pro $line v te while smycce.
luke237

Pro kontrolu si dam muzes dat testovaci vypisy (echo $soubor, echo $line, ...).

Opravdu si precti ten manual k Bashi!

 

luke237
hodnocení

0x
Myslim, ze uz jsem to psal posledne, ze se nejedna o skript v terminalu Debianu, ale o Bash skript. S Debianem to nema nic spolecneho. Stejne tak vyraz "psat neco v terminalu" je nejaky divny. Vubec mi to nejde pres jazyk. *ee* Lidi by spise rekly: "Napiste v shellu skript ...".
nufan
hodnocení

Jasně, ale toto teď neřeším, potřebuju to mít hlavně správně, tlačí mně termín. Před proměnnou jsem dal tedy $ a teď skript spustím a chci do něj načíst ten soubor, se kterým má pracovat. Napíše u řádku 6 příkaz nenalezen. Jak to teda udělat?

Potřebuju aby ten soubor nebo cestu k němu zadával uživatel. Tak jak to upravit? Prosím o radu! Manuál nestíhám číst.

luke237
apíše u řádku 6 příkaz nenalezen

Za "if" musi byt hranate zavorky a ne kulate.

nufan
hodnocení

Aha...a to mi prosím napsal cvičící :-D

Závorky jsem opravil a spustil skript...jak se zadává tedy ta cesta? napsal jsem název souboru (což je asi kravina že?) a nic z toho - viz. obrázek.

Debian - skript v terminálu #2
lue237

Vzdyt ti to pise, ze ti tam na konci chybi hranata zavorka.

Me to tady normalne funguje: if [ ! -f $soubor ] then ...

nufan
hodnocení

Píše, ale ony tam jsou obě závorky, tak já nvm. Teď už to funguje, ale ještě ne tak jak má (viz obrázek).

Co tam mám pořád blbě? To nenačte ty adresy z toho souboru servery.txt (viz 2. obrázek)?

Debian - skript v terminálu #3
Debian - skript v terminálu #4
luke237

Zase ti dam stejnou radu jako v predchozim prispevku - cti, co ti Bash pise! Pise ti: "4x ping na adrese:" a uz ti pak nic nevypisuje, tedy promenna line je prazdna. Musis si udelat to presmerovani vstupu, jak jsem psal nekde uplne na zacatku.

Na Internetu si najdi priklady na pouzivani "read" v Bash a u spousty z nich je to resene i pro cteni ze souboru (tedy je tam udelano i to presmerovavani).

nufan
hodnocení

Ty to přesměrování asi nevíš, co? Hledám to všude možně, ale nerozumím tomu na takové úrovni abych to zkutil.

Každopádně díky moc, je to velká pomoc i takto!

luke237
Szmorejme ze to vim, ale nechci ti to tady cele psat. Ja si to tady cvicne na tech 5 radku napsal a funguje mi to :) Jestli se ti nechce hledat to presmer/..., tak ti prozradim, ze asi nejjednodussi je to udelat takhle: while ... done <$soubor
luke237
  1. while read line;
  2. do
  3. echo "4x ping na adresu: $line"
  4. ping -c 4 $line
  5. done < $soubor
Vsimni si take nazvu parametru za prikazem ping.
nufan
hodnocení

D Ě K U J I M O C K R Á T!

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]