- iPhone topik
- Motorola Moto Tag - nyomom, követ
- Itt az igazság a Samsung állítólagos Android Auto alternatívájáról
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Samsung Galaxy Watch6 Classic - tekerd!
- Vivo X200 Pro - a kétszázát!
- Apple iPhone SE - se vele, se nélküle
- A HMD visszalép az USA piacáról
- Google Pixel topik
- Samsung Galaxy Watch7 - kötelező kör
Új hozzászólás Aktív témák
-
sonar
addikt
Sziasztok,
Egy expect-tes kérdést bátorkodnék feltenni.
Hogyan lehet a környezeti változókat használni expcet-ten belül? Shell script nélkül megoldható? (shell-vel ha feladom paraméternek akkor működik, de szeretném megspórolni azt a plusz lépést)
Valami ilyesmi lenne a kód:
.test.exp $IP $UID $CUSTOMPATH#!/usr/bin/expect
set IP [lindex $argv 0]
set UID [lindex $argv 1]
set CUSTOMPATH [lindex $argv 2]Az IP, UID meg a CUSTOMPATH környezeti változók. És azt szeretném ha nem kéne paraméternek feladni hanem a scripten belül csak használnám. Sok paraméter van és ez hibázásra adhat lehetőséget.
-
Sonja
nagyúr
Miért ad vissza hibát a zsh shell erre a parancsra (zsh: closing brace expected)?
for x in ./*; do ffmpeg -i "$x" "${x::-4}".ogg; done
Ha bash shell alól futtatom, akkor szépen fut is.
-
douggutaby
tag
válasz
dabadab #2496 üzenetére
Hibakezelés még kell, de kb ennyi. A sed-del lépegetést lehetett volna szebben is, de nekem jó lesz így is
#!/bin/bash
this_date=$1
year=$(date --date="$this_date" "+%Y")
month=$(date --date="$this_date" "+%m" | sed 's/^0*//')
day=$(date --date="$this_date" "+%d" | sed 's/^0*//')
result=""
content=$(curl -s https://www.hrportal.hu/munkaido_${year}.html)
start_num=$(echo "$content" | grep -n "<article>" | cut -d ":" -f 1)
end_num=$(echo "$content" | grep -n "</article>" | cut -d ":" -f 1)
content=$(echo "$content" | sed -n "$start_num,${end_num}p")
month_num=$(echo "$content" | grep -n caltrm | grep -v munkanap | sed "${month}q;d" | cut -d ":" -f 1)
day_type=$(echo "$content" | sed -n "${month_num},\$p" | grep "caltd.*>${day}<" | head -1 | cut -d '"' -f 2)
case "$day_type" in
caltdb | caltdred | caltdsarga)
result="hetvege"
;;
caltdszurke | caltd)
result="munkanap"
;;
esac
echo $result
-
dabadab
titán
válasz
douggutaby #2495 üzenetére
Nekem sincs jobb ötletem. Van a Google Calendarban magyar ünnepnapos naptár, azt is használhatod, bár így elsőre a html-t bányászni egyszerűbbnek tűnik.
-
douggutaby
tag
Sziasztok,
Szeretném bash scripttel kinyerni, hogy adott nap ünnepnap, munkanap vagy sima hétvége. De nem igazán találok megoldást. Egyszerű lenne, felsorolni egy calendar.hungary fájlban, de vannak mozgók, mint a húsvéthétfő, és szombati munkanapok se ugyanott vannak. Egyetlen ötletem egyelőre, hogy curl "https://www.hrportal.hu/munkaido_2020.html" majd grep cut és awk különböző kombinációi.
Van jobb? -
-
Tudtok valami egyszerű, de jó shell szkript leírást, ami végigvezet az alap dolgokon? Tudom, neten van 1000000+1, de hátha van valakinek valami bevált, amiből anno megtanulta.
-
samujózsi
senior tag
válasz
Fecogame #2489 üzenetére
Mert "a számítógép az utasításaid és nem a kívánságaid szerint működik"
(közel negyven éves bölcsesség)
Ha megnézed az awk doksit, az END és a BEGIN is ugyanúgy minták, mint a /.../.
A BEGIN-hez tartozó blokk még azelőtt fut le, hogy bármit beolvasna, az END-hez tartozó meg az utolsó feldolgozott sor után.
Amit te próbáltál csinálni, azzal végigmegy az inputon, a ! /wpcli/ mintához tartozó semmit végrehajtja, majd amikor elér a fájlvéghez, kiírja az input fájl utolsó sorának 9. szavát.
A szűrés csak arra vonatkozik, hogy az adott mintára illeszkedő sorral csináljon valamit.Talán van még olyan lehetőség, hogy ugorja át az adott mintának megfelelő sorokat ténylegesen hagyja ki a feldolgozásból, de ha van is, nem emlékszem rá.
Van olyan lehetőség, hogy lépjen át adott mintának megfelelő sorokat, de ez csak a beolvasott sorok feldolgozására vonatkozik, az END mintára nem érvényes:/wpcli/{ next } { ... itt csinálsz valamit a wpcli-t nem tartalmazó sorokkal }
Nem tudom, ez így érthető?
-
válasz
samujózsi #2488 üzenetére
Ami az első sorban van, az annyit csinál, hogy a megadott könyvtárból a
grep
kiszűri azokat a találatokat, amikwpcli
stringet tartalmaznak, majd kiprinteli a legutolsó sort, a végén azawk
pedig a 9. oszlopot.Elméletileg az awk is ugyanezt csinálná, csak valamiért mégsem. A kizárásos szűrés nélkül lefut hiba nélkül:
ls -dl /mnt/backup/* | awk 'END{ print $9 }'
Amit írtál commandot valóban működik (
), csak nem értem, hogy az enyém miért nem, és miért kellett bonyolítani, hogy működőképes legyen?
-
samujózsi
senior tag
válasz
Fecogame #2487 üzenetére
Le tudod fordítani emberi nyelvre azt, amit az awk-ba írtál?
Mert úgy saccra ha sikerülne is eltalálni a szintaxist, akkor sem azt csinálná, amire vágysz.ls -dl /mnt/backup/* | awk 'BEGIN { w="" } ! /wpcli/{ w=$9 } END { print w}'
Szerintem valami ilyesmit szerettél volna, nem?
-
válasz
Jester01 #2476 üzenetére
Ha már itt tartunk, nem engedtem el ezt a command egyszerűsítés dolgot
Ezt a parancsot:
ls -dl /mnt/backup/* | grep -v wpcli | tail -1 | awk '{ print $9 }'
Erre alakítottam át, csak valamiért nem működik:
ls -dl /mnt/backup/* | awk '! /wpcli/ END{ print $9 }'
És sajnos így sem:
ls -dl /mnt/backup/* | awk '! /wpcli/ && END{ print $9 }'
A hiba:
awk: cmd. line:1: ! /wpcli/ END{print $9}
awk: cmd. line:1: ^ syntax error
Hol lehet a gond? -
samujózsi
senior tag
válasz
Jester01 #2483 üzenetére
Ott a pont!
Csak ez hol van leírva, mert emlékszem a szövegre, de sem a helpben, sem a manban nem találom.Az egyértelmű, hogy egyes fájlokról csak a logból kapok infót, de hogy találom meg?
Sok ezer, tízezer soros logból hogyan tudom kiválogatni a hibaüzeneteket?
Alaphelyzetben a másoláskor átugrott fájlokat sem mutatja, amit szintén nem értek, számomra az lenne a logikus, hogy letiltom ha nem kell. -
Jester01
veterán
válasz
bambano #2481 üzenetére
Nem egészen értem mire gondolsz, de rsync always verifies that each transferred file was correctly reconstructed on the receiving side by checking a whole-file checksum that is generated as the file is transferred Szóval pont azt csinálja amire te egy külön programot javasolsz
samujózsi: az egész folyamatról az exit code ad visszajelzést, de egyes fájlokról valóban csak a logból lesz információd.
EXIT VALUES
23 Partial transfer due to error
24 Partial transfer due to vanished source files -
samujózsi
senior tag
válasz
bambano #2481 üzenetére
Hát ebben nem feltétlenül értünk egyet, ilyen alapon a cp eredményében sem bízhatok. De nem is ez a kérdés, hanem az, hogy az rsync hibaüzeneteit hogy lehetne utólag kitúrni a logból.
Amikor kérdeztem, már futott, nem tudtam a stderr-t átirányítani. Mivel biztos, hogy kimaradnak fájlok, mert merge jellegű műveletet végez hasonló könyvtárakon, a rc nem lesz 0. És fogalmam sincs, hogy jelzi a másolás közben fellépő hibákat (pl. de tényleg csak pl! Ha valamelyik fájlt nem tudta lemásolni, mert folyamatosan változott - ilyen hibával már találkoztam) Valahogyan biztosan jelzi, de egyelőre se a google, se a man nem segített. -
samujózsi
senior tag
Át lettem irányítva ide: rsync --log-file=x.x ...
Jó lenne kiszűrni a több ezer/tízezer sorból a hibátlan másolást jelentő sorokat és csak a maradékot átnézni.
Tudna valaki segíteni, hogy hogyan? Regex pattern is megfelel vagy RTFM link is. -
Van egy parancsom, ami a következő:
certbot certificates | grep 'Domains' | awk '{ print $2 }' &> /tmp/file
Tökéletesen lefut, az egyetlen probléma, hogy az alábbi output megjelenik a terminálban:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Ha így futtatom, akkor nem jelenik meg, csak ez esetben a szűrés nincs elvégezve:
certbot certificates &> /tmp/file
Szeretném elrejteni, ami miatt a parancsom végén a "&>" átirányítást használom. Azonban ez nem működik, ha közben még átadom az outputot más parancsoknak pipe-al.
Hogyan lehetne elrejteni ezt az egy sort, ami megjelenik pluszban?
-
Lehet volt már, de találtam egy egészen hasznos cikket a témában:
-
bambano
titán
válasz
Jester01 #2471 üzenetére
közben én is szöszöltem vele: azon száll el, hogy utf-8-ban egyes karakterek kétbájtosak, és ettől fejreáll a parser.
a megoldás: visszakapcsoltam egybájtos kódolásra, és akkor már működik a tar beépített exclude-ja.tehát az, hogy:
tar cf backupfile konyvtar --exclude '*.pst'
nem működik, de az, hogy:LANG=en_US tar cf backupfile konyvtar --exclude '*.pst'
igen. -
Jester01
veterán
válasz
Jester01 #2470 üzenetére
Alapállapot:
$ tar cvf /dev/null Dokumentumok/
Dokumentumok/
Dokumentumok/Outlook f\341jlok/
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_18 10_17_59 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_19 06_24_12 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_13 13_26_02 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_16 07_03_14 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_20 10_31_00 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_19 09_25_18 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_13 10_21_47 UTC).pst
Összes 2019_09_19 kihagyása wildcarddal:
$ tar cvf /dev/null --exclude 'T?rolt ?zenetek 2017 (2019_09_19*' Dokumentumok/
Dokumentumok/
Dokumentumok/Outlook f\341jlok/
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_18 10_17_59 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_13 13_26_02 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_16 07_03_14 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_20 10_31_00 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_13 10_21_47 UTC).pst
Ugyanez egyesével, fájllistával:
$ printf 'T\341rolt \374zenetek 2017 (2019_09_19 06_24_12 UTC).pst\nT\341rolt \374zenetek 2017 (2019_09_19 09_25_18 UTC).pst\n' > exclude.lst
$ tar cvf /dev/null --no-wildcards -X exclude.lst Dokumentumok/
Dokumentumok/
Dokumentumok/Outlook f\341jlok/
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_18 10_17_59 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_13 13_26_02 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_16 07_03_14 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_20 10_31_00 UTC).pst
Dokumentumok/Outlook f\341jlok/T\341rolt \374zenetek 2017 (2019_09_13 10_21_47 UTC).pst
-
bambano
titán
kicsit beszorultam idővel, tudna valaki tippet adni, hogy lehet lementeni egy kriksz-kraksz fájlneveket is tartalmazó könyvtárat tarral úgy, hogy bizonyos fájlokat ki akarok hagyni?
kösz
ui: ha olyan egyszerű volna, hogy elolvasom a manualt és beírom a megfelelő kapcsolót, akkor nem kérdeznék itt... -
dabadab
titán
Van egy rakat ilyen tool, van browser extension, online szolgáltatás meg még ezer ilyet találsz, ha rákeresel arra, hogy "web crawler".
-
Headless
őstag
nem egy szeretett megoldás ez , de ha nincs RSS forrás, akkor nincs más.
curl/wgettel letöltöd a html fájlt. utána már két megoldás használ valami xml parser-t és azzal szűröd ki a lényeget, vagy ha nem akarsz/ nincs lehetőséged ilyet telepíteni, akkor pedig marad a grep, tr,sed, stb megoldások, pipeolgatsz jobbra/balra, mig megnem kapod a szeretett formátumot...Első körben azért megnézném, nincs-e valami RSS forrás... meg egyébként telefonra elég sok alkalmazás létezik ami hasonlóakat tud, pl árfolyam értékek... sőt még értesít is ha kell...
-
cigam
titán
Adott WEBoldalról hogyan lehet pár karakter lelopni, és beilleszteni egy txt megadott pontjára?
PL. https://www.mnb.hu/arfolyamok-ról kellene 1-2 adatot beolvasni, és betenni a szöveg megfelelő pontjára:
"Az jelenlegi árfolyamon [Ide jönne a beolvasott érték] forint egy euró, a Román lejért pedig [Ide jön a másik beolvasott érték] forintot kérnek."
Vagy pl. a hétvégi választási adatokat beilleszteni egy txt-be.
Az 1. választókerület jelöltjeinek szavazatai: [1.jelölt] [1.szavazatai], [2.jelölt] [2.szavazatai]"
Hírtelen nem is tudom hogyan kellene nekiállni, de biztosan létezik már rá kész megoldás -
Jester01
veterán
válasz
Kékes525 #2456 üzenetére
Szerintem a PH! interaktív fórumrészben nézelődj.
-
Kékes525
félisten
Az új PH! felületre vannak scriptek?
-
bambano
titán
válasz
Fecogame #2450 üzenetére
ha és amennyiben a piton programozók értettek a dolgukhoz, akkor ez nem is fog működni. ennek a fő oka az, hogy unixban az a szokás, hogy jelszót nem a szabvány bemenetről olvasunk, hanem a terminálról. tehát van rá reális esély, hogy a setup.py program eldobja az stdin-t, és megnyitja a /dev/tty-t és arról akar olvasni, azt pedig nem tudod átirányítani.
-
dabadab
titán
válasz
Fecogame #2450 üzenetére
Azért nem működik, mert ez a négy parancs egymás után, mindenféle kölcsönös interakció nélkül fut le.
Attól függően, hogy hogyan működik a python script, több megoldás is lehet.
A legegyszerűbb ez:
echo -en "$EMAIL\n$PW\n$PW\n" | python ./setup.py
Ha ez nem megy, akkor az expect jön képbe, az azért macerásabb (példa).
Új hozzászólás Aktív témák
Hirdetés
- iPhone topik
- Fejhallgató erősítő és DAC topik
- DUNE médialejátszók topicja
- Hálózati / IP kamera
- Kuponkunyeráló
- Sony MILC fényképezőgépcsalád
- BestBuy topik
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Milyen egeret válasszak?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- Assassin's Creed Shadows Collector's Edition PC
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Vírusirtó, Antivirus, VPN kulcsok
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- HPE Aruba PoE+ L3 switch raktárról azonnal elérhető!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Alkatrészt cserélnél vagy bővítenél? Nálunk van, ami kell! Enterprise alkatrészek ITT
- Motorola E40 64GB, Kártyafüggetlen, 1 Év Garanciával
- MacBook felvásárlás!! Macbook, Macbook Air, Macbook Pro
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest