- QNAP hálózati adattárolók (NAS)
- Windows 11
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Az USA nem akarja visszafogni Kína növekedését
- Synology NAS
- Mesterséges intelligencia topik
- Xiaomi AX3600 WiFi 6 AIoT Router
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Az Apple iPadOS-t is megrendszabályozza az EU
- Otthoni hálózat és internet megosztás
Új hozzászólás Aktív témák
-
sto1911
veterán
bambano: bash tud pattern matching-et digit-re.
Akkor egy olat tudnal irni? barmennyi szamjegy lehet benne, de betu vagy mas irasjel es szokoz nem.
En ilyenre gondoltam:if [ $a=[0-9]* ] then ...
csak ez vmiert nem muxik jol, valamint integer expression expected hibat ad, ha nem numerikus erteket kap (mondjuk ez ertheto, csak ezt nem rendszeruzenetkent kellene neki kiirni, hanem a programbol. Es ugyanez a problema doc megooldasaval is )
[ Szerkesztve ]
-
bambano
titán
Nem azzal van a gond, hogy megadod, melyik shellel kell futtatni, hanem azzal, hogy valójában nem adod meg.
Ma már egy unixon soha nem tudhatod, hogy milyen shell van a szabvány sh alá dugva és az mennyire kompatibilis. Ezért szerintem jobb megoldás, ha konkrétan megmondod, hogy melyik shellt akarod. Pl. egy átlag debianon bash van az sh alatt, viszont most akarnak áttérni dash-ra. Az ördögnek pedig árkok vannak a szeme alatt (mert nem alszik ).
A fordított aposztróffal meg nem az a bajom, hogy obsolote, hanem az, hogy nehéz egymásba ágyazni
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
dabadab
titán
"ha a script sima sh-val fut, akkor futnia kell azzal is, amire a /bin/sh mutat, barmi is legyen az"
Viszont ez nem kommutativ relacio, vagyis ha nalad a /bin/sh fedonev alatt futo bashon fut, az nem jelenti azt, hogy barmilyen sh--kompatibilis shellen is futni fog. (Mondjuk ugy remlik, hogy konkretan a bash ujabb verzio figyelnek erre, es ha /bin/sh neven hivja meg az ember, akkor az extra bashes funkciokat kikapcsolja - de erre azert nem epitenek.)
DRM is theft
-
ivivan
tag
"az egymasba agyazas valoban nehezkes backtick-kel, de az mar eleve csunya (marmint nem a backtick, az jooo )"
Hát nem értek egyet. Én szeretem az egymásba ágyazást és $(...) módszerrel nagyon szépen és látványosan meg is lehet oldani. (vajon ez szabványos vagy bash specifikus? Életemben nem használtam még más shell-t :-) )
És tényleg át akarnak állni dash-ra? Az miért lesz jobb? Egyáltalán miben lesz más?
Állatkerti képek: http://hu.zoopictures.eu
-
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 ]
-
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 ]
-
szike21
csendes tag
Köszönöm!
Még egy apró problémám lenne.
A feladatot így oldottam meg, de nem tudom kiíratni a végeredményt relatív útvonallal. Először foglalkozom linuxal ezért a sok kérdés.x=$1
ls -lR $x | awk '{print $1}' | tr -s ":" " " | grep '/' > mappa.txt
cat mappa.txt | while read line; do
ls -l $line | grep '^..w..w..w.' | awk '{print $8}'
done
rm mappa.txt
exit 0 -
Yahoo
aktív tag
Igen, lényegében jól érted...tehát adott egy fájlnév és szeretném ha egy parancs visszadobná nekem az abszolút útvonalát. Tehát nem keresni akarok az adott fájlnévre, mivel pl. ha több van belőle, többet kapnék vissza, más más útvonalakon.
Bocs, hogy csak így a végső stádiumot írom le, de nagyon hosszadalmas lenne teljesen kifejteni az egész szkriptem lényegét, mivel a hátralévő rész ennyi és feltéve, ha létezik és működik ez a parancs, akkor nem kínzom sem magam sem titeket a teljes problémával. Köszönöm.[ Szerkesztve ]
-
dabadab
titán
"a 'pwd' kimenetehez hozza kell fuzni a filenevet es kesz "
Egyreszt a filenev tulajdonkeppen lehet abszolut eleresi ut is, akkor dol a mutatvany (persze, egy egyszeru iffel kezelheto a helyzet, de az mar macera ), masreszt meg a realpath a kanonikus eleresi utat adja vissza, ami symlinkeknel lehet hasznos, pl:
db@cucumalac:~$ ls /home/db/x/../lib
mldonkey/ mythtv/
db@cucumalac:~$ ls /home/db/lib
ls: cannot access /home/db/lib: No such file or directory[ Szerkesztve ]
DRM is theft
-
dabadab
titán
Ha mar egyszer ugyis itt vagyok
for i in `find .` ; do blablabla ; done
Ez egeszen addig mukodik, amig a find altal visszaadott utvonalakban nincs szokoz (vagy tab vagy newline, pontosabban az $IFS valamelyik tagja). Ha van, akkor meghal a dolog. Igazan korrekt megoldast nem tudok mondani, van egyreszt ugye a find . -exec blabla {} \;, de ez csak akkor mukodik, ha a blabla vmi vegrehajthato file, shell functionoket viszont igy nem lehet meghivni (legalabbis kozvetlenul nem es nem tudok mondani semmi normalis trukkot ennek a megkerulesere).
Aztan el lehet sutni azt is, hogy find . | ( while read LINE ; do blabla "$LINE" ; done ), ez nagyreszt mukodik, kiveve, ha konkretan newline van a filenevben (ami mondjuk tenyleg nem gyakori jelenseg, de elofordulat - foleg, ha valaki direkt ki akarja hasznalni a scriptnek ezt a gyengeseget).[ Szerkesztve ]
DRM is theft
-
doc
nagyúr
meg akkor mar legyen teljes, a masodik feladatot megoldo script:
my $line = "";
foreach (<>)
{
my @val = split;
if ($val[2] == 0)
{
print "$line\n" if ($line ne "");
$line = substr($_,0,20).$val[-1];
}
elsif ($line ne "")
{
$line .= " $val[-1]";
}
}
print "$line\n";hasznalata ertelemszeruen perl scriptedneve.pl <javitott.txt
vagy ha egyben akarod a kettot hasznalni:
perl lapa1.pl <data.txt | perl lapa2.pl
sot, ha POSIX-kompatibilis oprendszert hasznalsz (gyakorlatilag a windowson kivul barmi), akkor a script elejere biggyesztve a #!/usr/bin/perl -w sort es futtathato attributumot allitva, ennyi:
lapa1.pl < data.txt | lapa2.pl
-
lapa
veterán
huh, hát nagyon köszi. nemsoká belemélyedek.
erre a windows dologra ránéztem, de nincs a repóban:
root@inox:/home/lapa# apt-get install windows
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package windows
root@inox:/home/lapa#ettől függetlenül vbs-ben megoldottam volna, ezekkel a junixos regulárokkal meg awk-kal nem vagyunk még összemelegedve. pedig a honlap asp-jét is migrálnom kéne már php-ba, ha jól értettem az nagyon hasonló a perlhez, pár idegesítő kivétellel.
ja, régen csináltam logon szkriptet vbs-ben, emlékszem én is valami kompatibilitási gondokra. asszem még olyan is volt, hogy xp-n futott, de 2003-on nem. na azon belilult nekem is a fejem, hiszen szegről-végről ugyanaz.
az inputot le tudom állítani, nem téma. azaz az eredeti fájl nem válozik feldolgozás közben. emiatt nem varázsolnék adatbázissal, de lehet, hogy idővel célszerűbb lenne.
igazából nógatom a digitemp fejlesztőjét (a forrás a digitemp kimenete), hogy csináljon olyan log formátumot, amit a gnuplot egyből szeret. ez szerintem elég generikus igény, tekintve, hogy "a" hőmérő meg "a" grafikon appokról van szó. szóval remélem megcsinálja idővel.
mint írtam mindjárt nekifutok és beszámolok az eredményekről.
[ Szerkesztve ]
-
lapa
veterán
az lehetséges, hogy az első megoldás a hiányzó 0-kat nem egészíti ki, csak az 1, 2, 3, 4-et? csak valami 80 sor plusz lett az eredetihez képest, pedig párezer 0-s hiányzik.
mire megnyitom és ellenőrzöm tételesen openoffice-ban a nap lemegy...
sajnos nem igazán értem mit csinál a szkripted. ami nem baj, csak nem tudom megnézni a választ a fenti kérdésre.
[ Szerkesztve ]
-
bambano
titán
ez igaz.
viszont az összes pingnek, amit eddig láttam, más a kimenete. azt parsolni...
másrészt meg az snmp magasabb rendű funkció, több mindennek kell működni, ha az válaszol.szerk: láttam már cuccot, amit egy snmpwalk hanyatlökött...
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
dabadab
titán
DEVICES="/dev/sda1 server:/dir/"
MAX_USAGE=5
NEED_TO_PANIC=0
for USAGE in `df $DEVICES | tail -n +2 | tr -s ' ' |cut -f5 -d' ' | tr -d '%'` ; do
if [ $USAGE -gt $MAX_USAGE ] ; then
NEED_TO_PANIC=1
fi
done
if [ $NEED_TO_PANIC -gt 0 ] ; then
echo 'PANIC!!!'
fi[ Szerkesztve ]
DRM is theft
-
doc
nagyúr
nem tul elegans megoldas (nincs parameterellenorzes sem), de mukodik
1 #!/bin/sh
2
3 while true; do
4 for dev in $@ ; do
5 if [ `df $dev | grep -o '[0-9]\+%' | grep -o '[0-9]*'` -gt 5 ]; then
6 echo Low space on $dev
7 fi
8 done
9 sleep 1
10 doneMOD: ehh, nem gondoltam volna hogy megeloznek mondjuk talaltam jo otletet dabadab scriptjeben, amivel tenyleg szebb lesz (pl. tr -d %)
[ Szerkesztve ]
-
ddekany
veterán
for i in `ls -1`; do echo $i ; done
Na, igen, aljas módon pont ezért kérdeztem... mert ez hibás. Az for szegény white-space-nél szeletel, nem csak sortörésnél, és ezért ha szóköz van egy fájlnévbe, akkor több fájlnak fogja nézni. Aljas egy csapda, és azért van, mert eléggé trükkös ahogy a dolgok több körben behelyettesítődnek meg értelmezve lesznek. Hát na, ilyenekre gondoltam ott a másik topicban...
-
ddekany
veterán
Hát ez meg a másik... de ez meg itt OFF. Na de mindegy, akkor ide írom be, hogy ezért lenne jobb a JSON-al mert akkor csak simán:
df $dev | jget usagePercentage
Ránézel, és látod mit csinál, nem kell megnézni a kimenetet hány oszlop stb, leszedni a %-ot... Amúgy eredetileg df | jfilter device in @$-re is gondoltam, de mondjuk itt pont gány lenne, mert feleslegesen kérdezne le X device-t. (Csak az erdeti feladat valójában az volt, hogy melyik device-t NE nézze, azt adjuk át... de mindegy, innentől látod mire gondoltam a JSON-os kimenet feldolgozás kapcsán. Jó, ott sem elegáns a filter, de... mindegy, látszik mire jó.)
Ja, az ls meg úgy jeach file in `ls` kb. Ott nincs ez a kavar, mert a kimenet ["file név 1", "file név 2"].
[ Szerkesztve ]
-
ddekany
veterán
"biztos en vagyok a hulye, de en nem szoktam space-t rakni a filenevbe"
Legalábbis szerveren én sem... viszont nem is én állítom jellemzően elő a fájlokat, vagy nem olyan program amit én írtam, szóval a fölött nincs kontrollom (mint gondolom másnak sincs).
"a peldad meg santit, mert a df nyilvan alapvetoen arra van, hogy EN megnezzem mennyi a szabad hely"
Az van, hogy ott egy rakás tool a toolboxban, és nyilván azt lenne jó akkor használni scriptekben, szóval ezzel megint nincs mit kezdeni nagyon.
Ha meg a példák után is szerinted a JSON-s (vagy akármilyen gépi fogyasztásra strukturált) kimenettel a bonyolultabb minden, vagy nem érné meg globálisan egy ilyen irány, azzal már nem tudok mit kezdeni...
"ranezek a df outputjara, majd egyedul a "grep" parancsot hasznalva mar kesz is a megoldas"
És ha ránézel a shell scripte, amit nem tegnap írtál, vagy nem te írtad, akkor meg nem látod mit csinál... A forráskódokat általában többször olvassák mint írják.
"Alapvetoen nem rossz az otlet, hogy valamilyen szabvanyos feluleten kommunikaljanak egymassal a programok, de ezt rakenyszeriteni a felhasznaloi interakciora kitalalt programokra nagy butasag"
De hát 2x megírni a programokat, egyszer így, egyszer úgy, meg még nagyobb képtelenség. Hiszen a kétféle kimenet generálásnál a forráskód java része közös lenne.
De szóval mindegy... átadtam amire gondoltam ama másik topicban, aztán kész.
[ Szerkesztve ]
-
dabadab
titán
Az egy dolog, hogy te nem teszel bele, de lehet benne es ez pont olyasmi, amire shellscript iraskor tenyleg figyelni kell.
"a peldad meg santit, mert a df nyilvan alapvetoen arra van, hogy EN megnezzem mennyi a szabad hely"
Nem hiszem, hogy "alapvetoen" erre lenne, hiszen ha shellscriptbol meg akarod nezni, hogy mi a helyzet a szabad hellyel, akkor mast nem nagyon tudsz hasznalni. En egyebkent a magam reszerol orulnek, ha az ilyen fancy tooloknak lenne valami rendes, gepi feldolgozasra alkalmasabb kimenete is (ahol pl. nem vagja le a hosszabb nevu device-ok nevenek a veget, hogy mast ne mondjak, vagy nem localefuggo az, hogy mit ir ki).
DRM is theft
-
bambano
titán
"Vagy, írj egy scriptet, ami csinál valamit (minegy mit), ha neki paraméterként átadott dev-ek bármelyikén 95% alá csökken az üres hely.":
#! /bin/bash
echo 'PÁÁÁÁNIIIK!!!!!!!!!'
ennyi.
persze ha figyelembe vesszük azt is, hogy nyilvánvalóan feltolták a vércukorszintjét és azért írt ökörséget, akkor ennél bonyolultabb scrtiptre is szükség lehet. Hint: 95% alá csökken az üres hely részmondatot szerintem nem így akarta megfogalmazni.Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
ddekany
veterán
Gondolom a felvetés itt az lenne, hogy de mi van, ha a JSON feldolgozások után mégis ki akarom írni a végeredményt a felhasználónak.
Először is, mi van jelenleg. Kitéphetek sorokat egy táblázatból, a fejléc meg ugye elmarad (fejléc nélküli táblázat meg azért elég necces). Aztán a táblázat oszlopok szélessége nem a megjelenített, hanem az összes (kiszűrt) cuccokhoz van igazítva, ez sem a legszebb.
Aztán mit lehetne a JSON (vagy ami) csodával... egy dictionary listából eleve lehet automatikusan táblázatot csinálni, aminek fejléce is van meg minden. Nyilván, ehhez az kell, hogy egy tool alapértelmezett kimeneti formátuma (JSON vagy plain text) jól dőljön el. Ezt megadhatnád kapcsolóban (--json VS --plain, mondjuk), vagy ha nem adod meg, akkor alapértelmezésben --plain lesz, kivéve ha egy speciális pipe szimbólumot adsz meg utána, mondjuk legyen .| vagy akármi, és akkor a --json lenne az alapértelmezés a bal oldalán. Aztán ha még csavarni akarsz azon, hogy hogy nézzen ki a táblázat, akkor erre is könnyű tool-okat írni, tehát pl. sokminden .| jtable egyikOszlopNeve=ígyformázva másikOszlopNeve=amúgyformázva ,és akkor ebbe belepipeolod amit akarsz. Sőt... egy másik érdekes lehetőség, hogy mivel a df ezen fiktív változata belül úgy is eleve JSON-ból (pontosabban annak AST-jéből, de most mindegy) formáztatja az embernek szánt kimenetet is, az is lehetne standard opció, hogy visszavezetem bele amit én kikapartam szűrt meg így-úgy rendezett akármicsinált JSON eredményt, hogy na akkor ezt formázd, mintha csak te termelted volna belül magadnak. Szóval elég sok hatékony dolgot lehet ezzel csinálni... Ha meg tényleg csak plain textet akarsz szűrni, azt is lehet, mert nem j-s kimenetet kérsz és kész...
-
ddekany
veterán
"azzal, hogy nem valaszoltal"
De akkor mi akart lenni a kérdés? Remélem nem az, hogy hogyan nézem meg, hol nagyobb 90%-nál a foglaltság...
"az meg hogy minden egyes aprocska toolban legyen oda-vissza iranyu json parser es konverter"
Kurva egyszerű lenne pedig a tool író szempontjából, mivel ezek lényegében rendszer funkciók... kb. regisztrálsz két callbackot a toolban, egyik a formázás, másik maga a lényegi feladat elvégzése, és majd az OS(/shell) eldönti, hogy melyiket hívja mikor. Az meg nem tudom leesett-e, hogy ha egy alacsonabb rétegben befektetsz X emberévet, azzal megtakarítasz összességében sokszor X emberévet. Pl. sokkal kevesebb idő megy el tool írásra, mint tool használatra.
[ Szerkesztve ]
-
ddekany
veterán
Jó, akkor: df .| jfilter usagePercentage gte 90. Mi van ezzel?
Parsolással meg nem tudom mi bajod, bár tán tesem... Igen, bele kell rakni egy hívás valami shared library funkcióra, ami az egész mechanizmust "meghívja". Soha nem látott komplexitás szoftverfejlesztés területén...
"meg mindig nem lattunk semmit ami igazolna hogy ez a vilagmegvalto ujitas valoban megsporolna szamottevo idot "
Visszanézve a két példát, képes vagy ezt így kijelenteni. Valószínűleg direkt szórakozol... vagy van az a bizonyos határtalan dolog is elvégre, nem tudhatom.
-
nagyúr