Új hozzászólás Aktív témák
-
Fecogame
veterán
Szeretnék egy script-et írni ( egyenlőre csak a következő dologra ) Windows alatt.
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
ping www.prohardver.huA fenti két paranccsal az a gondom, ha lefut az első sor, nem lép tovább a másodikra, hanem megvárja míg a Firefox be nem záródik. Hogyan lehetne ezt kiküszöbölni?
Az most lényegtelen, hogy értelme nincs, majd lesz ha bővítem
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
-
sonar
addikt
Sziasztok,
Tegnap scriptelgettem egy kicsit és egy olyan problémába futottam bele, hogy file-okat keresetem amiben szerepelnie kellett két feltételnek.
Ezt két létpcsőben oldottam meg. De kiváncsi vagyok, hogy létezik-e a vmi "profibb" megoldás
Meg lehet oldani vhogy egy paranccsal, hogy azokat a fileokat listázza amiben szerepel mondjuk a "feltétel1" és a "feltétel2" ?
egrep-pel próbálkoztam, de nem igazán jött összeA tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
spammer
veterán
válasz Headless #2059 üzenetére
Szerintem nem fájlnevekről van szó, hanem fájlokról, amikben keresünk (több sorban, és bármelyikben lehet a keresendő kifejezés). Ha feltétel itt most kulcsszót jelent, akkor ilyesmi:
grep -Pzl 'KEYWORD1.*\n.*KEYWORD2' *.txt
grep -Pzo 'KEYWORD1.*\n.*KEYWORD2' *.txtDe pl. ezek sem teljesen jók, mert ha a 2-es kulcsszó van előbb, már nem találja meg.
grep -Pzo 'KEYWORD1.*\n.*KEYWORD2|KEYWORD2.*\n.*KEYWORD1' *.txt
így sem találja meg mindet, mert csak az elsőt veszi figyelembe. Az egrep pedig semmit nem ad vissza ezzel.
awk '/keyword1/ && /keyword2/' *.txt szintén nem működik.
De ha mégsem kulcsszóról van szó, akkor nem ártana tudni, milyen feltételről van szó.
Ha valakit tud profi, egysoros (egy parancsos, nem pipe-os) megoldást a fentiekre, arra (én is) kíváncsi lennék.
[ Szerkesztve ]
„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."
-
Jester01
veterán
válasz spammer #2060 üzenetére
Egysorosnak nem egysoros de egy parancs és egyszer olvassa a fájlokat:
awk '
BEGINFILE { f = 0 }
/egy/ { if (f % 2 < 1) f += 1; }
/ketto/ { if (f % 4 < 2) f += 2; }
ENDFILE { if (f == 3) print FILENAME }
'GNU awk-ban van or() függvény azzal:
awk '
BEGINFILE { f = 0 }
/egy/ { f = or(f, 1) }
/ketto/ { f = or(f, 2) }
ENDFILE { if (f == 3) print FILENAME }
'[ Szerkesztve ]
Jester
-
Jester01
veterán
bash verzió:
for file
do
f=0
exec 3< "$file"
while read -u3 line
do
[[ "$line" =~ egy ]] && f=$((f | 1))
[[ "$line" =~ ketto ]] && f=$((f | 2))
done
exec 3<&-
[[ $f == 3 ]] && echo "$file"
doneJester
-
sonar
addikt
Kicsit pontositok.
a file-ban szerepelnie kell mindkét kulcsszónak.Az awk-t nézegettem, de mostanában nem scriptelgettem és jól megkopott a tudásom.
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
Headless
őstag
válasz Jester01 #2061 üzenetére
tudom kérdező nem írta, de busyboxos awk-ban nincs BEGINFILE,ENDFILE. Ez a ugyanaz, csak áthidalva ezt, valamint egysorosítva
awk 'FNR==1{if(f==3)print last;f=0}/KEYWORD1/{if(f%2<1)f+=1}/KEYWORD2/{if(f%4<2)f+=2}{last=FILENAME}' /test/*
LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/
-
őstag
Sziasztok!
Szükségem lenne egy kis segítségre. Van egy állományom, benne az alábbiak szerint szerepelnek adatok:
1.,Balogh Elvira,hölgy,1988.06.02.,Sárospatak,85000
2.,Dudás Diána,hölgy,1967.03.16.,Simontornya,101000
3.,Kocsis Vince,úr,1936.10.28.,Várpalota,74000
4.,Kocsis Balázs,úr,1960.12.03.,Várpalota,110000
...Hogyan lehet awk használatával listázni az urak esetében megtalálható legmagasabb fizetést várásonként?
Köszönöm előre is!
“Mankind invented the atomic bomb, but no mouse would ever construct a mousetrap.” Albert Einstein
-
Headless
őstag
válasz RoyalFlush #2067 üzenetére
Szia!
awk -F, '{split(ugyfel[$5],a,",");if($6>a[6])ugyfel[$5]=$0}END{for(i in ugyfel)print ugyfel[i]}' /test/fizetesMost hogy az urak, azt a legegyszerűbben egy pipe grep-el tenném a végére hátha kell a nőké is valamikor...
de végülis ez is egy megoldás. Így még gyorsabb is mert kihagyja a nőket.
Férfiak:
awk -F, '$3!~/h.lgy/{split(ugyfel[$5],a,",");if($6>a[6])ugyfel[$5]=$0}END{for(i in ugyfel)print ugyfel[i]}' /test/fizetesNők:
awk -F, '$3~/h.lgy/{split(ugyfel[$5],a,",");if($6>a[6])ugyfel[$5]=$0}END{for(i in ugyfel)print ugyfel[i]}' /test/fizetes[ Szerkesztve ]
LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/
-
őstag
-
Headless
őstag
válasz RoyalFlush #2069 üzenetére
Azért te is utána járhatsz a dolgoknak stackoverflowon sok minden van , csak hasonló típusú dolgot kell keresned.
Ám Férfi 10. hónap, szűrhetsz évre és napra is ebből mennie kell már.
awk -F, '$4~/[0-9]{1,4}\.10\.[0-9]{1,2}/&&$3!~/h.lgy/{split(ugyfel[$5],a,",");if($6>a[6])ugyfel[$5]=$0}END{for(i in ugyfel)print ugyfel[i]}' /test/fizetes
LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/
-
őstag
-
footy
addikt
Sziasztok!
A nem hasznalt halozatainkat szeretnem kiszurni, erre eloallitottam egy listat amiben benne van a halozat cime(+Mask) es az elso valamint az utolso hasznalhato IP (ezek nalunk a Gateway-k).
Netz Mask Start End
10.10.0.0 16 10.10.0.1 10.10.255.254Kellene egy olyan script ami megpingeli az elso es utolso ip-t es beirja egy file-ba hogy hasznalatban van-e a halozat vagy nem.
PL: 10.10.0.0 Not activekoszi
-
Jester01
veterán
És hol akadtál el?
#! /bin/bash
while read net mask start end
do
if [ $net = Netz ]
then
continue
fi
echo -n $net
ping -n -c 1 $start >/dev/null 2>&1
pstart=$?
ping -n -c 1 $end >/dev/null 2>&1
pend=$?
if [ $pstart -eq 0 -o $pend -eq 0 ]
then
echo " Active"
else
echo " Not active"
fi
done[ Szerkesztve ]
Jester
-
-
footy
addikt
válasz bambano #2074 üzenetére
AZ nmap-re nem is gondoltam
Ilyesmit barkacsoltam ossze, de nem az igazi(nem ertek a scripteleshez):
1 #!/bin/bash
2 # Program name: checknet.sh
3 date
4 cat test.txt | while read output
5 do
6 nmap -sP "$output" > output.txt
7 if [ $? -eq 0 ]; then
8 echo "network $output is active"
9 else
10 echo "$output NA"
11 fi
12 doneAz output igy nez ki:
Nmap run completed -- 16 IP addresses (0 hosts up) scanned in 0.108 seconds
Tehat azt kellene eldonteni hogy 0-e a hosts.Koszi mindkettotoknek a gyors valaszt
-
olivera88
veterán
Ide küldtek a problémámmal a Linux haladóknak topicból. Remélem van rá valami jó megoldás. Ajánlották a hash ellenőrizést, de az nem jó mert nem egyforma a hash.
Erről lenne szó. [link]Ez futtatás scriptje, a letöltéshez másik van.
#!/bin/sh
python /home/oliver/Magics-PCP,T_script/arpegepcpmslvhu_72.py
python /home/oliver/Magics-PCP,T_script/arpegepcpmslhu_72.py
python /home/oliver/Magics-PCP,T_script/arpegepcpmslsrb_72.py
SZERVER='név'
FELHASZNALO='felhasznalol'
JELSZO='jelszo'
ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP72.png
send ARPEGEPCPHU72.png
send ARPEGEPCPRS72.png
exit
EOF[ Szerkesztve ]
LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_
-
olivera88
veterán
válasz Jester01 #2080 üzenetére
Működik egyelőre. Nagyon szépen köszönöm.
Azt még be lehetne tenni esetleg ha hibás fájl töltödik le akkor megpróbálja x perc múlva futattni? Vagy azt már bízzam inkább systemd re? Habár azt nem tudom h lehet beállítani normálisan, be lehet állítani a restartot, mondjuk 10 percenként, de az nem jó, mert akkor állandóan azt fogja csinálni h 10 percenként lefut.[ Szerkesztve ]
LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_
-
Jester01
veterán
válasz olivera88 #2081 üzenetére
Persze, bele kell tenni egy while true ciklusba:
while true
do
size=$(stat -c \%s foo)
if [ $size -lt 40894464 -o $size -gt 45088768 ]
then
# hiba, varj 10 percet
sleep 10m
# probald ujra
continue
fi
# csinald meg amit kell
# ...
# kesz, nem kell ujra
exit 0
doneJester
-
olivera88
veterán
-
olivera88
veterán
válasz Jester01 #2084 üzenetére
Bele kell tenni a letöltésbe is ezt ellenőrzést, mert ha nem jó töltődik le akkor próbálja újra egy idő után a letöltést. Mert ha futtatáshoz teszem a letöltést, és nem jól töltődik le, akkor újra kell futtatni letöltést pár perc múlva, és akkor ellenőrzés nem lesz benne ugye? És ha akkor is rossz fájl akkor megcsinálja hibás fájlal.
LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_
-
-
Jester01
veterán
Biztos, de most nem tudom mire gondolsz.
Jester
-
válasz Jester01 #2088 üzenetére
csinálsz egy végtelen ciklust, amiben össze-vissza ugrálsz, felesleges utasítások vannak benne.
a ciklus kilépési feltétele nem a ciklusfejben van leírva. stb.rendesen ezt úgy illik, hogy:
ciklusfej
ciklusba szükséges utasítások
ciklusvég
a maradék (jelen esetben a konvertálás).Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Jester01
veterán
válasz bambano #2089 üzenetére
Szerintem az most bonyolultabbra jönne ki, mivel kétszer kellene ellenőrizni a méretet vagy az elején is lenne várakozás.
size=0
while [ $size -lt 40894464 -o $size -gt 45088768 ]
do
# letoltes
# ...
size=$(stat -c \%s foo)
if [ $size -lt 40894464 -o $size -gt 45088768 ]
then
# hiba, varj 10 percet
sleep 10m
fi
done
# csinald meg amit kell
# ...Vagy
first=1
size=0
while [ $size -lt 40894464 -o $size -gt 45088768 ]
do
if [ $first -eq 0 ]
then
# hiba, varj 10 percet
sleep 10m
fi
first=0
# letoltes
# ...
size=$(stat -c \%s foo)
done
# csinald meg amit kell
# ...Vagy a letöltést lehet duplikálni:
# letoltes
# ...
size=$(stat -c \%s foo)
while [ $size -lt 40894464 -o $size -gt 45088768 ]
do
# hiba, varj 10 percet
sleep 10m
size=$(stat -c \%s foo)
# letoltes
# ...
size=$(stat -c \%s foo)
done
# csinald meg amit kell
# ...Szerintem ezek rondábbak. Más ötlet?
[ Szerkesztve ]
Jester
-
Headless
őstag
válasz Jester01 #2090 üzenetére
Egy ilyesmi esetleg?
#csinálj amit akarsz
while [ ! "$size" ] || [ $size -lt 40894464 -o $size -gt 45088768 ];do
#Letöltés
size=$(stat -c \%s foo)
[ $size -lt 40894464 -o $size -gt 45088768 ] && sleep 10m
done
#csinálj amit akarszÍgy az első esetben amíg nincs definiálva a size értéke, akkor belép a ciklusba utána pedig mindig a második feltétel lesz az érvényes, mert az első hamis lesz.
[ Szerkesztve ]
LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/
-
válasz Jester01 #2090 üzenetére
teljesen igazad van, ezek mind rondábbak
size=0
while [ $size -lt 40894464 -o $size -gt 45088768 ] ; do
wget akarmi
size=$(stat -c '%s' $filenev 2>/dev/null || echo 0)
grep Jabber $filenev && exit 0
sleep 10m
done
ide meg a python konverter indításennél is lehetne jobbat szerintem, ha nem épp ap-t konfigelnék
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Headless
őstag
válasz bambano #2093 üzenetére
exit 0 kifogja lőni a teljes scriptet semmit nem fogsz utána lefuttatni, helyette akkor break.
jester01: igen eleinte anélkül írtam csak, aztán rájöttem, amit te is írtál, hogy ha nem rakod bele, akkor az első futtatás is 10 perces lesz.
[ Szerkesztve ]
LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/
-
válasz bambano #2093 üzenetére
a veremtúlcsordulás megint okosabb volt
szóval a szép megoldás az a do-while ciklus szimulálása bash-ben:
while
wget akarmi || true
do
méretellenőrzés && break
grep Jabber && break
sleep 10m
doneheadless:
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Jester01
veterán
válasz bambano #2096 üzenetére
Ja hát nem tudtam, hogy a break az nem számít "össze-vissza ugrálsz"-nak
Ez meg: "while wget akarmi || true" éppenséggel pont ugyanolyan végtelen ciklus mint amit leköpködtél, a kilépési feltétel itt sem a while-ban van.Ennél:
while wget akarmi || true
doszerintem ez
while true
do
wget akarmiegyszerűbb és olvashatóbb. Főleg, ha ott nem csak 1 wget van, hanem valami bonyolultabb.
[ Szerkesztve ]
Jester
-
brickm
őstag
Sziasztok!
A problémám az lenne,hogy bat fájllal szeretnék egy adatbázist rejtett mappából másik rejtett mappába áttenni.
Megírtam ezt:
Xcopy "regihely\data.txt" "ujhely\%date%.txt" /HMüködik,csak egy a bökkenő...az xcopy kérdez,hogy file,vagy folder... ezt szeretném én automatizálni,de hiába nézem az xcopy helpet meg a neten ajánlott dolgokat,egyik se vált be eddig...
Sima copy-val nincs ilyen gond,csak azzal nem megy a rejtett mappa ha jól tudom.