Hirdetés

2024. május 5., vasárnap

Gyorskeresés

Hozzászólások

(#651) Nyiscsák


Nyiscsák
aktív tag

Üdv.

Van egy scriptem csak nem tudom mi lehet a baja mert nem fut le! Ez lenne az:
#!/bin/sh

mit="/home/nyiscsak/Asztal/"

hova="/var/backups/"

OF=home-$(date +%Y%m%d).tgz

tar -cZf $mit$OF $hova

Hogy lehetne megoldani hogy paraméterben megadjam mit és hova mentsen? Egy kicsit zavaros nekem ez a történet :B

Köszönöm előre is!

(#652) Jester01 válasza Nyiscsák (#651) üzenetére


Jester01
veterán

Először is a -Z az nem gzip, mert az a kis z. Másodszor, az argumentumokat pont fordítva adtad meg. Harmadszor, ha legközelebb kérdezel legalább a hibaüzenetet légyszíves.

#!/bin/sh

mit="/home/nyiscsak/Asztal/"

hova="/var/backups/"

OF=home-$(date +%Y%m%d).tgz

tar -czf "$hova$OF" "$mit"

MOD: ja ha bemenő paraméterben akarod megadni, akkor értelemszerűen "$1" és "$2"

[ Szerkesztve ]

Jester

(#653) Nyiscsák válasza Jester01 (#652) üzenetére


Nyiscsák
aktív tag

Köszi de még mindig hibát ír de lehet nem jól futtatom :(

root@ubuntu:~/Asztal# ./rar.sh
bash: ./rar.sh: /bin/sh^M: bad interpreter: Nincs ilyen fájl vagy könyvtár

(#654) bambano válasza Nyiscsák (#653) üzenetére


bambano
titán

ugye nem windowson szerkeszted a scriptet és töltögeted át linuxra?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#655) Nyiscsák válasza bambano (#654) üzenetére


Nyiscsák
aktív tag

Nem! Linux 10.04-en vagyok amit wubival telepítettem.

(#656) Jester01 válasza Nyiscsák (#655) üzenetére


Jester01
veterán

Ettől függetlenül DOS-os sorvég jel van benne, az első sorban mindenképp. Tüntesd el onnan. Ha máshogy nem, akkor dos2unix vagy fromdos paranccsal.

Jester

(#657) Nyiscsák válasza Jester01 (#656) üzenetére


Nyiscsák
aktív tag

Most már más hibával lép ki:
root@rpg-desktop:~/Asztal# ./rar.sh home/rpg/ home/rpg/Asztal/
tar: home/rpg/Asztal: a következő függvény meghiúsult: stat: Nincs ilyen fájl vagy könyvtár
tar: home/rpg/20100505-18\:00.tgz: a következő függvény meghiúsult: open: Nincs ilyen fájl vagy könyvtár
tar: A hiba nem hozható helyre: kilépés
tar: Child returned status 2
tar: Kilépés hibaállapottal a korábbi hibák miatt
root@rpg-desktop:~/Asztal# ./rar.sh /home/rpg/ /home/rpg/Asztal/
tar: A kezdő „/” eltávolítása a nevek elejéről

Fogalmam nincs mi baja lehet!

Így néz ki most:
#!/bin/sh
OF=$(date +%Y%m%d-%H:%M).tgz
tar -czf "$1$OF" "$2"

(#658) bambano válasza Nyiscsák (#657) üzenetére


bambano
titán

az, hogyha a dátumot bele akarod rakni a fájlnévbe, akkor csak olyan dátumformátumot használj, ami fájlnévnek is megfelel.

szedd ki belőle a kettőspontokat meg a hasonló karaktereket, a dátum maradjon kizárólag szám.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#659) Nyiscsák válasza bambano (#658) üzenetére


Nyiscsák
aktív tag

Kiszedtem de nem ez volt a baja.

(#660) Jester01 válasza Nyiscsák (#657) üzenetére


Jester01
veterán

root@rpg-desktop:~/Asztal# ./rar.sh /home/rpg/ /home/rpg/Asztal/
tar: A kezdő „/” eltávolítása a nevek elejéről

Itt ha egyéb üzenet nem volt, akkor ez sikeres volt. Az nem hiba, csak a tar szólt, hogy lecsapja a kezdő / karaktert, hogy ne abszolút elérési út legyen (ez kicsomagolásnál jól jön) A tgz fájl minden bizonnyal létrejött.

Jester

(#661) szunyog199


szunyog199
tag

Hali.
Irtam egy kisebb Shell scriptet csak egy problémám lenne vele a case szerkezettel.
A progi naggyából annyit takar hogy paraméterként megadott 4 számmal dolgozik.
A case-ben található "$ossz -gt 5" sehogy sem akar működni, szol minden áron azt ijra ki hogy az eredmény kisebb mint 5. Mi lehet a probléma? Köszönöm

ossz=0
l=0
if [ $# -eq 4 ]
then
for v in $*
do
f=`expr $1 + $2`
k=`expr $f - $3`
ossz=`expr $k / $4`

l=`expr $l + $v`

done
case $ossz in
0) echo "A végeredmény 0";;
"$ossz -gt 5" echo "A végeredmény nagyobb mint 5";;
*) echo "A végeredmény kisebb mint 5";;

echo A paraméterben megadott számok összege: $l
else
echo nem adtál meg 4 parát.
fi
echo $ossz

(#662) Jester01 válasza szunyog199 (#661) üzenetére


Jester01
veterán

Hát mert a case az nem úgy működik. Oda csak mintát lehet megadni. Használj további if-else szerkezetet. Mellesleg a lezáró esac is hiányzik.

Jester

(#663) szunyog199 válasza Jester01 (#662) üzenetére


szunyog199
tag

Mostmár sikerült köszi.

(#664) bejmuller


bejmuller
aktív tag

Hello mindenki :)

Remélem nem halt ki teljesen a topic.
Az lenne a kérésem, hogy valaki segítsen ki egy SED paranccsal. A feladat a következő:

"A parancssorban megadott állományok soraiból törölje ki a második és negyedik szót. A szavak csak betűket és számjegyeket tartalmaznak, az elválsztó karakter pedig a szóköz."

A shell script megírása megy, csak éppen a SED-del nem vagyok kibékülve.
Ha valaki tud, és van rá ideje, akkor segítsen, szépen kérem :).

Előre is köszi.

[ Szerkesztve ]

Az ornitológusoknak nincs jutalom a munkájukban. A madarak leszarják az embereket. :D

(#665) bambano válasza bejmuller (#664) üzenetére


bambano
titán

az a lényeg, hogy a szavakban nincs szóköz, csak közöttük. ezzel fel lehet darabolni a bemeneteket.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#666) Shaele


Shaele
csendes tag

Hello!
Remélem még nem halt ki teljesen ez a topic, a következő kérdésem lenne. Írnom kell egy scriptet amiben korlátlan számú paramétert megadhatok futáskor. A futáskor megadott első paramétert létrehozza mappaként (mkdir), a többit meg fájlként hozza létre és beleírja azt h hanyadikként lett létrehozva, meg még 2 sort (lényegtelen). A kérdésem az lenne, hogy hogyan tudom ezt megvalósítani egy for ciklussal (illetve benne egy if else gondolom, de hogy? )

(#667) bluetiger9


bluetiger9
csendes tag

Sziasztok! :)

Írtam egy szkriptet, aminek az lenne a feladata, hogy megnyit egy fájlt az Excel Viewerben:

#!/bin/sh
a="'Z:"
b="'"
c=$a$1$b
`env WINEPREFIX="/home/bluetiger9/.wine" wine "Z:/home/bluetiger9/.wine/drive_c/Program Files/Microsoft Office/Office12/XLVIEW.EXE" $c`

Azt szeretném elérni, hogy ha meghívom a szkriptet így:
/bin/script.sh "/elso konyvtar/masodik konyvtar/excel fajl.xls"
akkor hajtsa végre a kővetkező parancsot:
env WINEPREFIX="/home/bluetiger9/.wine" wine "Z:/home/bluetiger9/.wine/drive_c/Program Files/Microsoft Office/Office12/XLVIEW.EXE" 'Z:/elso konyvtar/masodik konyvtar/excel fajl.xls'
De ehelyett ha az elérési útvonalban van szóköz, akkor az Excel Viewer úgy értelmezi, mintha több fájl akarnák megnyitni.

Amíg csak Z:$1 írtam a $c helyére addig az egyszerű elérési útvonalú fájlokra működött, de most már azokra se megy.

Szerintetek hol rontottam el?

(#668) lapa


lapa
veterán

hello world. van két parancsom, amiből az első egy ssh port forward, a második meg vnc lenne, ami az imígyen készült likon át távnézeget. röviden az a problémám, hogy nem tudom hogyan magyarázzam el a shell scriptnek, hogy az ssh parancs végrehajtása után (jelszó) a vnc parancsot a helyi gépen futtassa le.

ssh -L 5900:192.0.0.1:5900 -l juzer -p 22 192.0.0.1

xvncviewer -lowcolourlevel=1 -autoselect=0 localhost

remélem érthető és kivitelezhető, amit szeretnék. köszi előre is.

(#669) Jester01 válasza lapa (#668) üzenetére


Jester01
veterán

ssh -L 5900:192.0.0.1:5900 -f -N -o ExitOnForwardFailure=yes -l juzer -p 22 192.0.0.1
xvncviewer -lowcolourlevel=1 -autoselect=0 localhost

Plusz ha beállítod a kulcs alapú bejelentkezést, akkor nem kell jelszó se.

Jester

(#670) Jester01 válasza bluetiger9 (#667) üzenetére


Jester01
veterán

Szerintem idézőjel hiányzik a $c köré.

Jester

(#671) lapa válasza Jester01 (#669) üzenetére


lapa
veterán

wunderbár, köszönöm.

ja a kulcsos izére még ránézek majd, ez volt a level 1.

(#672) lapa válasza lapa (#671) üzenetére


lapa
veterán

na küzdöttem egy kört ezzel a megoldással, és úgy néz ki ez még pontosan az, amit karácsonyra kértem.

a probléma annyi, hogy a tunnel megmarad a háttérben. tudom, hogy ez volt a feladat, így pontosítanék:

azt szeretném, hogy ha ráklikkolok egy ikonra, akkor gyöjjön fel egy terminálablak, és abban történjen meg tunnel bigyózás, meg a vnc elindítás. így akkor tudnám mi van és ctrl+c-vel meg tudnám szakítani, ha már nem kell.

persze még advancedebb lenne a dolog, ha a szkript megvárná, míg a vnc bezár, és akkor gyorsan bezárná a tunnelt.

mindenesetre elég lenne a látható ablakos motyó is.

gyengécske próbákat tettem gnome-terminal -x kapcsolóval, de hiába játszottam az ssh -f -fel nem akarta jól.

köszi a segítséget.

(#673) doc válasza lapa (#672) üzenetére


doc
nagyúr

csak most kapcsolodtam be a szalba, az elozmenyekbe csak gyorsan beleneztem, de ha azt a fo feladat, hogy terminalablakot feldobva tortenjen valami, akkor megcsinalhatod pl igy:

xterm -e 'wget http://prohardver.hu/index.html'

letolti az oldalt, kozben latod a progressbart, majd miutan vegzett, becsukodik

(#674) lapa válasza doc (#673) üzenetére


lapa
veterán

annyi a csavar, hogy itt van egy második parancs is.

először port forwardot építünk, aztán vnc-t indítunk.

nekem sima && elválasztóval nem ment a dolog.

[ Szerkesztve ]

(#675) doc válasza lapa (#674) üzenetére


doc
nagyúr

xterm -e 'wget http://prohardver.hu/index.html && watch df -h'

nekem Ubuntu 10.4 alatt teljesen jol mukodik

ha valami olyan specialis parancsot/parameterezest hasznalsz hogy nem megy, akkor esetleg a ; (pontosvesszo) karakterekkel illetve zarojelezessel lehet probalkozni

MOD: ha nem megy, akkor masold ide a konkret parancssort, aztan megnezzuk

[ Szerkesztve ]

(#676) lapa válasza doc (#675) üzenetére


lapa
veterán

igen, azt meg megint elfelejtettem, hogy jelszót is kér...

itt a parancs(ok):

xterm -e 'ssh -L 5903:gep.homelinux.org:5904 -f -N -o ExitOnForwardFailure=yes -l juzer -p 11111 gep.homelinux.org && xvncviewer -lowcolourlevel=1 -autoselect=0 localhost::5903'

lehet, hogy ez csak akkor fog menni, ha kulcsokat csinálok mindenhez?

[ Szerkesztve ]

(#677) doc válasza lapa (#676) üzenetére


doc
nagyúr

hat pedig ez nekem teljesen jol mukodik...

mi az a resze ami nem megy nalad?

(#678) lapa válasza doc (#677) üzenetére


lapa
veterán

az, hogy az ssh -f a háttérben nyitva hagyja a tunnelt.

ha nem rakom bele az -f -et, akkor meg nem indítja a vnc-t.

az lenne a kívánatos, hogy csak addig van tunnel, amíg az vnc-t be nem zárom. még az is oké, ha ctrl+c-t kell nyomnom a végén, ha egyébként az indítás egy klikkből megy.

[ Szerkesztve ]

(#679) dabadab válasza lapa (#674) üzenetére


dabadab
titán

"nekem sima && elválasztóval nem ment a dolog."

Azert nem, mert a masodik parancsot csak akkor hajtja vegre, ha az elso futasa befejezodott (es nullat adott vissza), szoval ez igy tenyleg nem fog menni, mert az ssh addig fut, amig el a tunnel. Igazan gyors megoldast nem tudok ra javasolni, a maceras az lenne, hogy eloszor inditsd el a tunnelt a hatterben, vard meg, amig lesz valami (kiepul a tunnel vagy hiba miatt kilep az ssh) es utana inditsd el a vnc-t.
Egyebkent tunnelezeshez javaslom az autossh-t, ugyanis az ssh kapcsolatok meg szoktak halni. Fogalmam sincs, hogy miert, de elobb-utobb lehalnak.

szerk: hoppa, a -f kimaradt nalam, akkor vissza az egesz :)

[ Szerkesztve ]

DRM is theft

(#680) lapa válasza dabadab (#679) üzenetére


lapa
veterán

az nem lenne gáz, ha lehal idővel. az eredeti problémán azzal van, hogy az ssh-t tudó vnc kliensek gyatrák, nemigen működtek.

ebből jött az, hogy először tunnel, aztán vnc. csak jópofa lenne ha csak egy ikonnyi helyet foglalna el.

(#681) doc válasza lapa (#680) üzenetére


doc
nagyúr

akkor egy ilyesmi esetleg:

xterm -e 'ssh root@192.168.1.151 & ( sleep 15 ; watch df -h)'

igy a masodik (zarojeles) blokk az elsovel parhuzamosan fut. vagyis az ssh bekeri a jelszot, kozben megy a 15 masodperces timer, es ha lejar, elindul a watch

igy nem kell a -f, viszont nem is megy backgroundba az ssh, vagyis ottmarad az ablak (bar az a vnc miatt gondolom amugy is maradna)

(#682) lapa válasza doc (#681) üzenetére


lapa
veterán

ez működik, király. köszi mindenkinek.

(#683) tomi0630


tomi0630
csendes tag

Sziasztok.

Olyan problémám lenne hogy a következő feladatot kaptam és gőzöm nincs hogy kezdjek neki. A feladat és a kritériumai:

A feladatnak működnie kell a gyakorlat során használt gépen. A feladatnak
nem szabad "szemetet" hagynia maga után. Az elkészített feladatnak meg
kell felelnie a feladat kiírásának. A hallgatónak tudnia kell válaszolnia a
feladattal kapcsolatban feltett kérdésekre.

Az n 2 [0; 999] szám kiírása szövegesen. A feladat meghívása: arab2text n

Valaki tudna segíteni várom válaszát a következő email-re: tomi0630@vipmail.hu

Előre köszönöm a segítségeteket. :)

(#684) bambano válasza tomi0630 (#683) üzenetére


bambano
titán

azt tudd, hogy ez nem az "oldjuk meg mások házifeladatát" topic.
és azt is sejteni kellene, hogy a tanárok is ide járnak ellenőrizni.

elkezdeni úgy kell, hogy elárulod, mi van a gyakorlat során használt gépen. majd olvasgatod a doksikat.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#685) Dalone


Dalone
csendes tag

Hello!
Nekem egy (biztos elég) alap kérdésem lenne, mert még nem igazán sikerült belemélyednem a shell scriptekbe...
Azt kellene megállapítani, hogy a felhasználó által megadott adat az szám, vagy szöveg. Valaki tudna segíteni, hogy ezt melyik paranccsal tudom megtenni?
Előre is köszi

Dalone :)

(#686) Jester01 válasza Dalone (#685) üzenetére


Jester01
veterán

Például ráhúzol egy regexpet annak megfelelően, hogy a feladat szerint mi minősül számnak.

Jester

(#687) rt06


rt06
veterán

Hi!

hogyan adok ossze bash-ben lebegopontos szamokat?
jelenleg igy probalom:
cpu_total=$(( $cpu_total + $cpu ))
es ezt kapom eredmenyul:
line 23: 0 + 48.99 : syntax error: invalid arithmetic operator (error token is ".99 ")

Udv: VladimirR

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#688) bambano válasza rt06 (#687) üzenetére


bambano
titán

"The shell allows arithmetic expressions to be evaluated, under certain circumstances (see the let and declare builtin commands and Arithmetic Expansion). Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. "

szóval bashban sehogy. de ha felrakod a bc-t, akkor azzal egyszerűen lehet

cpu_total=$(echo -n "scale=3; $cpu_total + $cpu " | bc -l)

valahogy így, de nem próbáltam ki.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#689) rt06 válasza bambano (#688) üzenetére


rt06
veterán

Hi!

kozben keresgeltem es en is csak bc-s megoldasokat talaltam

aztan - mivel a korabban itt tanultak alapjan az egesz arra ment volna ki, hogy kevesebb fork legyen - sok bc helyett megoldottam inkabb egy awk-val

mindenesetre kosz a segitseget,
Udv: VladimirR

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#690) Jester01 válasza rt06 (#689) üzenetére


Jester01
veterán

Az értéktartomány és a pontosság függvényében átalakíthatod fixpontossá majd egésszé, ott elvégzed az összeadást majd visszaalakítod ;) Valószínűleg nem éri meg a fáradságot :B

Jester

(#691) lapa válasza lapa (#682) üzenetére


lapa
veterán

csak a rekord kedvéért: az x11vnc a szerveren, valamint az ssvnc a kliensen megcsinálja ugyanezt. ubuntunál jó, hogy be sem kell hozzá jelentkezni, illetve hogy mind desktop sessiont át tud venni, mind másodlagosat indítani. a kliensről a kusztom ssh porton bemenni:

tsvnc juzer@szerver.hu:kusztomsshport

még tesztelem, de jónak ígérkezik.

(#692) j0k3r!


j0k3r!
senior tag

hello!

most ismerkedek meg csak a bash-el, szoval valoszinuleg tartom, hogy eleg trivialis, amit kerdezek. a feladatom az lenne, hogy olyan scriptet irjak, ami 2 parameterben megadott file sorait megszamolja, aztan kiirja oket (egyutt a kettoet)

amim eddig van:

#!/bin/bash

i=`wc "$1" --l | cut -d ' ' -f1`
j=`wc "$2" --l | cut -d ' ' -f1`
k=i+j
echo k

mi lehet a gond? elore is koszonom a segitseget.

some men just wanna watch the world burn...

(#693) rt06 válasza j0k3r! (#692) üzenetére


rt06
veterán

i=$( wc "$1" --l | cut -d ' ' -f1 )
j=$( wc "$2" --l | cut -d ' ' -f1 )
k=$(( $i + $j ))
echo $k

k=i+j tobb pontos in rossz
1: ez stringosszefuzes
2: ennek az eredmenye az "i+j" string lesz, nem pedig az i es a j valtozo (hianyzik a $ szimbolum) osszefuzese

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#694) j0k3r! válasza rt06 (#693) üzenetére


j0k3r!
senior tag

koszonom szepen, mukodik. kicsit furcsa nekem elso ranezesre ez a valtozo(?) kezeles, ertekedas, de majd megszokom. (sejtettem, hogy konkatenalja a stringeket, csak nem volt semmi output(ertekelheto), ezert nem voltam biztos benne)

some men just wanna watch the world burn...

(#695) j0k3r!


j0k3r!
senior tag

hello megint!

valoszinuleg megint nagyon konnyut fogok kerdezni, de egyszeruen nem talalok konkret peldat a problemamra a neten.
csupan annyi kellene nekem, hogy hogy kell az ls-t ugy parameterezni, hogy csak az mp3 kiterjesztesu file-okat listazza ki.
a manualban ez van:
--file-type
likewise, except do not append '*'

de hiaba probalgattam, sajnos nem megy.
ha valaki tudna segiteni, azt nagyon megkoszonnem.

szerk: kozben meglett :W
ls *.mp3

[ Szerkesztve ]

some men just wanna watch the world burn...

(#696) j0k3r! válasza j0k3r! (#695) üzenetére


j0k3r!
senior tag

lehet, hogy megse jo igy...
ha benne vagyok az adott mappaban, akkor jo:
joker@joker-Unknow:/media/2890EC8D90EC6334/zene/Warpaint$ ls *.mp3 -l

ekkor csak az mp3-akat mutatja
de ha igy adom ki a parancsot:
joker@joker-Unknow:~/prog$ ls /media/2890EC8D90EC6334/zene/Warpaint *.mp3 -l

igy mindent kilistaz + hibauzenet:
ls: cannot access *.mp3: No such file or directory

valakinek valami otlet? elore is koszonom.

some men just wanna watch the world burn...

(#697) dabadab válasza j0k3r! (#696) üzenetére


dabadab
titán

Nem kell a szóköz:

ls /media/2890EC8D90EC6334/zene/Warpaint/*.mp3 -l

Amit te írtál, az azt jelenti, hogy listázza ki a Warpaint könyvtárat meg az aktuális könyvtárban lévő mp3-akat.

DRM is theft

(#698) j0k3r! válasza dabadab (#697) üzenetére


j0k3r!
senior tag

zsenialis, koszonom :R

some men just wanna watch the world burn...

(#699) Yahoo


Yahoo
aktív tag

Sziasztok, épp a beadandóm gyártom a sulinak, már majdnem készen vagyok, de arra az istennek nem tudok rájönni, hogy az előzőekben már cut-tal megvágott ls -l listázásból megmaradt fájlnév részből (remélem érthető, tehát az ls -l parancs eredményéből csak a fájlnév rész kerül az stdoutra) hogyan tudom a kiterjesztést "kivágni", azaz az utolsó pont utáni részre lenne szükségem a teljes fájlnévből kizárólag. Tudna valaki segíteni? Köszönöm

[ Szerkesztve ]

(#700) dabadab válasza Yahoo (#699) üzenetére


dabadab
titán

sed 's/^.*\.\([^\.]*\)$/\1/'

Ez fogja a komplett sort (a ^ a sor eleje, a $ meg a sor vége), megkeresi benne a legutolsó olyan részt, ami egy pont után jön és nincs benne pont, és a cserével a komplett sort lecseréli erre a kis részre (a pontokat escape-elni kell, mivel az alapban joker karakter (ahogy az a legelső előfordulásakor látható is) meg a sima zárójeleket is, mert azokat alapból sima karakternek veszi a sed, a szögleteseket viszont nem, mert azok alapból kontrollkarakterek).

[ Szerkesztve ]

DRM is theft

Copyright © 2000-2024 PROHARDVER Informatikai Kft.