Új hozzászólás Aktív témák
-
Keeperv85
nagyúr
válasz
Jester01 #2199 üzenetére
Ez így azért nem jó, mert a könyvtárak nem üresek. 3 fájl után így néz ki a tree:
├── agnes_service
│ ├── AndroidManifest.xml
│ ├── apktool.yml
│ ├── classes.dex
│ ├── original
│ │ ├── AndroidManifest.xml
│ │ └── META-INF
│ │ ├── CERT.RSA
│ │ ├── CERT.SF
│ │ └── MANIFEST.MF
│ ├── res
│ │ ├── drawable-hdpi-v4
│ │ │ └── ic_launcher.png
│ │ ├── drawable-ldpi-v4
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi-v4
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi-v4
│ │ │ └── ic_launcher.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ ├── public.xml
│ │ └── strings.xml
│ └── unknown
│ ├── AUTHORS
│ ├── changelog.txt
│ ├── com
│ │ └── letv
│ │ └── agnes
│ │ └── core
│ │ └── agnes.properties
│ ├── LICENSE
│ ├── lombok
│ │ └── installer
│ │ ├── eclipse
│ │ │ ├── eclipse.png
│ │ │ ├── jbds.png
│ │ │ └── STS.png
│ │ ├── loading.gif
│ │ ├── lombokIcon.png
│ │ ├── lombok.png
│ │ ├── lombok.svg
│ │ ├── lombokText.png
│ │ ├── lombokText.svg
│ │ ├── WindowsDriveInfo-i386.dll
│ │ └── WindowsDriveInfo-x86_64.dll
│ └── release-timestamp.txt
├── AntHalService
│ ├── AndroidManifest.xml
│ ├── apktool.yml
│ ├── original
│ │ ├── AndroidManifest.xml
│ │ └── META-INF
│ │ ├── CERT.RSA
│ │ ├── CERT.SF
│ │ └── MANIFEST.MF
│ └── res
│ ├── drawable
│ │ └── icon.png
│ └── values
│ ├── public.xml
│ └── strings.xml
└── ApplicationsProvider
├── AndroidManifest.xml
├── apktool.yml
├── original
│ ├── AndroidManifest.xml
│ └── META-INF
│ ├── CERT.RSA
│ ├── CERT.SF
│ └── MANIFEST.MF
└── res
├── drawable
│ └── default_app_icon.png
├── drawable-mdpi-v4
│ └── default_app_icon.png
├── layout
│ └── application_list_item.xml
├── values
│ ├── ids.xml
│ ├── public.xml
│ └── strings.xml
├── values-en-rUS
│ └── strings.xml
├── values-hu
│ └── strings.xml
├── values-zh-rCN
│ └── strings.xml
├── values-zh-rHK
│ └── strings.xml
├── values-zh-rTW
│ └── strings.xml
└── xml
└── searchable.xmlNekem csak a fökönyvtár/res/values/fájlok tartalom kell megmaradjon, de a főkönyvtárakkal együtt. A többit szanálnám, hogy a meld pl. ne olvassa össze a másik ilyen fával. Ott vannak a strings.xml-ek, azoknak a frissítéseit kéne elvégezzem most csak.
-
Keeperv85
nagyúr
Sziasztok!
kicsit (na jó nagyon...
) elakadtam...
Android lokalizálás mellé szeretnék valami kis segéd scriptet létrehozni.
Van már egy ilyenem:
for i in *.apk; do echo $i; apktool d -s $i; done;
Ez szépen kibontja az apk fájlokat a nevüknek megfelelő mappába, kivétel nélkül.
Most azt szeretném, hogy ez után (az apk fájlok törlése nem gond nyilván) a kész mappákból csak az
apk_neve/res/values/
...mappa maradjon meg. Ezekben van a szöveg ugye, ezekhez diffelem majd a frissítését, a többi tartalom érdektelen számomra most.
-
prucam
tag
válasz
bambano #2195 üzenetére
"Nyilván a shell script is meg tudná számolni a sorokat. Mivel mindenhol csak első sorról beszéltél így nem tudtuk, hogy az is igény"
Az awk-nak nem kell a sort számolni!!!. Egyszerűbb ha bemásolom az adott sort egy üres file-be, azért NR==1.
1 az
2 awk
3 a
4 beolvasott
5 sort
6 a
7 mezőelválasztó
8 jeleknél
9 szavakra
10 tördeli
11 és
12 belerakja
13 a
14 $1,$2,...
15 tömbbe.
16 mire
17 van
18 még
19 szükséged?Hogy ezt csinálja az awk, mutassa a "tömböket". Másképp már nem tudom leírni.
-
prucam
tag
válasz
Headless #2192 üzenetére
Rendben. Egy kis magyarázat. Elnézést kérek.
Weblapokból, *txt-ékből, file-kből stb. szoktam az awk-val infót gyűjteni, főleg mondatkból. Néha olyan hosszúak a sorok (v. mondatok), hogy nincs kedvem "totozni" az awk-val, hogy most mezőben (mezőkben) van az info.
Ezért gondoltam arra, hátha van az awk-nak olyan funkciója, hogy mutassa meg melyik hányadik mezőben mi van.Saját egyszerű mondat pl.:
egy ketto harom negy ot
Végeredmény ez legyen:
1 egy
2 ketto
3 harom
4 negy
5 otA "read"-es megoldás jó nekem. Persze az adott sort nekem kell bemásolni a file-be. De mindig jobb mintha nekem kell számolgatni.
Az awk-nál meg van "NR==x" is, csak az adott sor számát kell "kitalálni":
Ennyi a magyarázat. Most érthetőbb?
-
Headless
őstag
-
Van egy szerver, amin szeretnék crontabbal futtatni egy shell scriptet egy adott userrel. Azonban nem megy.
Ha a scriptet önmagában lefuttatom ( ./ezazascript.sh ), akkor sikeresen lefut.
Ha beírom crontabba, akkor nem fut le.
Viszont ha ugyanebbe a crontabba beírok pl. egy touch-ot, akkor az lefut.Ilyen jogai vannak a scriptnek, ez elég?
-rwxr-x--- 1 user group 318 Aug 18 10:35 ezazascript.sh
Mi lehet a gond?
-
prucam
tag
Jester
itt a script:
#!/bin/bash
b=abc
read -a fields $b
for((i=0;i<${#fields[*]};i+=1))
do
echo $((i+1)) ${fields}
doneaz abc file-ben:
egy ketto harom negy otMit csináltam rosszul? Nekem nem csinál semmit a script.
___________________________________________________________________
bambano
Megnyitottam az oldalt, de ez én szerény angol tudásommal nem sokra juttotam…
___________________________________________________________________Headless
nekem nem az x.mező ({print $3}), hanem az összes kell, s azt szeretném tudni hogy melyikben mi van.
Közben eszembe jutott egy másik lehetőség (ha más nem lesz akkor megpróbáljuk azt), de az "awk"-ás tetszik.
Köszi mindenkinek az eddigi segtíséget.
-
Headless
őstag
Szimplán $0 helyett $1,$2,$3 stb-ket használsz, persze a field separator nem mindegy, hogy ; szóköz vagy mi. Pl
Fájl:
11;12;13;14
21;22;23;24awk -F";" '{print $3}' path
13
23Persze a field separatort magában az awk-ban is tudod változtatni az FS változóként ahogy a kimeneti elválasztót is az OFS-t.
-
prucam
tag
Sziasztok,
az awk-hoz kérnék segtséget.Ezt kellene tovább bonyolítani:
awk 'NR==1 {print $0}' file
Az első sorban az összes mezőt mutatja.
PL.
egy ketto harom negy otNekem az is kellene, hogy x.-ik mezőben mi van.
Ezt szeretném:
1 egy
2 ketto
3 harom
4 negy
5 ot -
dabadab
titán
válasz
Fecogame #2178 üzenetére
Persze, ez tök alap shellscriptes működés.
A pipe az, amivel egyik parancs kimenetét a másikébe irányítod, de kb. valami ilyesmi kell neked (az "echo hello" az a parancs, amit lefuttatsz, a grep utáni hello meg az, amit keresel):
if [ -z "$(echo hello | grep hello)" ] ; then
echo nincs benne
exit 1
else
echo benne van
fi -
Lehet olyan shell scriptet írni, hogy megvizsgálja a legutóbb kiadott parancs kimenetét, és ha adott szöveg van benne, akkor továbbengedi, míg ha nincs benne, akkor megáll / kiír egy szöveget?
Ha igen, hogyan? Milyen kulcsszavakra kellene keresnem?
-
Jester01
veterán
válasz
DrojDtroll #2175 üzenetére
A tiéd, hiszen látod a halom eredményt. Meg a neve is scan. Az arping meg pontosan azt az egyet fogja amit megadsz neki. Hogy ez érdekel-e téged azt nem tudom
-
spammer
veterán
válasz
DrojDtroll #2171 üzenetére
arp-scan -q --interface=wlp2s0 --localnet | awk '/mac cím/{print $1}'
?
-
Jester01
veterán
válasz
DrojDtroll #2171 üzenetére
Vagy arping (persze a kibányászást nem úszod meg, de nem kell mindenkit végigpingelni)
-
bambano
titán
válasz
DrojDtroll #2171 üzenetére
arpscan ... | grep "${mac}\$" | cut -f 1 -d\<szóköz>
-
DrojDtroll
veterán
Ebből a kimenetből kellene egy ip cím. Egy előre meghatározott mac címhez tartozó ip kellene.
Hogyan lehet ezt a legkönnyebben megoldani?
arp-scan -q --interface=wlp2s0 --localnet
Interface: wlp2s0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 512 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.204.1 00:27:19:b3:e4:06
192.168.204.22 20:1a:06:d2:1d:03
192.168.204.38 1c:6f:65:30:ba:72
192.168.204.89 00:15:65:8b:77:ad
192.168.204.124 00:15:65:8b:77:5e
192.168.204.132 00:15:65:8b:77:27
192.168.204.146 00:13:95:16:65:82
192.168.204.249 90:2b:34:74:3a:37
192.168.205.50 00:18:f3:09:e1:f6
192.168.205.137 20:1a:06:d2:1d:03
192.168.205.148 64:66:b3:a1:92:89
192.168.205.165 d0:50:99:26:c4:9b
192.168.205.168 44:d9:e7:74:97:8c
192.168.205.239 00:15:65:8b:76:dd
192.168.205.248 00:08:9b:e3:c3:01
15 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 512 hosts scanned in 2.212 seconds (231.46 hosts/sec). 15 responded -
bambano
titán
-
Geripapa
aktív tag
Hasonlóval küzdök én is.
Rasbian alatt rootal futtatok egy skriptet aminek meg kellene hivnia egy másik skriptet amit nem kellene hogy a root futason.
Rátudnátok nézni hogy hogy kellene inkább csinálni?
-
Köszönöm a válaszokat!
bob.zxr: Ez esetben nem kérne jelszót? Gyanítom, hogy de
colomb2: Próbáltam, ezt a hibát kaptam:
standard in must be a tty
vargalex: Olyan szerverről van szó, ahol nem vagyok root és nincs is jogom szerkeszteni a sudoers fájlt. Csak az adott user jelszavát tudom, akinek a nevében a parancsokat kellene futtatni.
bambano: Pontosabban mire gondoltál?
-
Rimuru
veterán
válasz
Fecogame #2159 üzenetére
Ha benne van a scirpten ez a sor akkor bekeri a jelszot es atjelentkezik, szoval nincs itt gond, majd ha kileptel onnan akkor fut tovabb a script.
De gondolom az kell amit bob irt, csak nem jol fogalmaztad meg a kerdest.
Amugy nagyon csunya es nem biztosansog megoldas (ne is hasznald csak megmutatom), de siman athadhatod neki a jelszot is.
echo "passwrod" | su - user
Ha ilyesmit szeretnel akkor inkabb sudo-t hasznalnam normalisan bekonfolva. -
Van egy user, aminek a nevébe szeretnék átjelentkezni a shell scriptem futtatásakor. Hogyan tudom ezt megtenni?
su - username
Idáig oké, de a hozzá tartozó jelszót hogyan iratom be vele?
-
-
dabadab
titán
válasz
spammer #2156 üzenetére
A tapasztalat azt mutatja, hogy ezek a pipe-ok a valós életben gyakran módosulnak, bővülnek, stb.
Ha bármit módosítani kell rajta, vagy egy részét kell tesztelni, stb, akkor mindig sokkal egyszerűbb az, ha magukhoz a parancsokhoz nem kell hozzányúlni, hanem simán lehet toldani-vágni. -
beloadjoker
őstag
Köszönöm szépen a sok hsz.-t átnyálazom őket!
-
vargalex
félisten
válasz
spammer #2151 üzenetére
Ez igaz. Viszont az is lehet, hogy ő konkrétan a file tartalmát akarja módosítani (és nem kiíratni a módosított változatot), akkor pedig már ezt tanulja meg
:
sed -i 's/\b19\([0-9]\{2\}\)\b/20\1/g' a
ahol a végén szereplő "a" természetesen a file neve, amit a példájából néztem.
-
vargalex
félisten
válasz
beloadjoker #2142 üzenetére
Szia!
Én ezt tenném:
cat a | sed 's/\b19\([0-9]\{2\}\)\b/20\1/g'
-
ZCoyote
őstag
válasz
beloadjoker #2145 üzenetére
Köszi!
-
Headless
őstag
válasz
beloadjoker #2143 üzenetére
Hát ez egy összetetteb ha így mindenre gondolni kell...
Első körben vegyük azokat amik a sor közepén helyezkednek el, 4 szám egymás után, előtte utána bármi ami nem szám, az már évszám
sed "s/\([^0-9]\)\(19\)\([0-9]\{2\}[^0-9]\)/\120\3/g" /evszam.txt
Előtte nincs semmi (sorkezdés) utána van bármi ami nem szám.
sed "s/^\(19\)\([0-9]\{2\}[^0-9]\)/20\2/" /evszam.txt
Előtte bármi ami nem szám, utána semmi (sorvég).
sed "s/\([^0-9]\)\(19\)\([0-9]\{2\}\)$/\120\3/" /evszam.txt
előtte utána semmi (csak az évszám van).
sed "s/^\(19\)\([0-9]\{2\}\)$/20\2/" /evszam.txt
Persze ezt besűrítheted egy nagy átláthatatlan parancsba.
sed "s/^\(19\)\([0-9]\{2\}\)$/20\2/;s/\([^0-9]\)\(19\)\([0-9]\{2\}\)$/\120\3/;s/^\(19\)\([0-9]\{2\}[^0-9]\)/20\2/;s/\([^0-9]\)\(19\)\([0-9]\{2\}[^0-9]\)/\120\3/g" /evszam.txt
Minden eshetőségre könnyebbet nem találtam. Persze a szövegelválasztókat cserélheted bármi másra. [^0-9] hogy ne ugorjon bármire, ami nem szám. pl nem szám és nem betű. [^0-9a-zA-Z] vagy csak szóköz és vessző [ ,]
Az &&-el óvatosan, ha mindenképp le kell futni, mert ha így adod ki, akkor csak akkor fog lefutni, ha az első parancs lefutott és a return értéke 0.
vagyis ha mondjuk grep nem talál semmit akkor nem fog végrehajtódni a && után jövő parancs. Ha már 1 sorba kell tömöríteni használjuk a ";"-et parancsok elválasztásához.
-
ZCoyote
őstag
Sziasztok,
Lehet, hogy ez a kérdés nem ide tartozik de hátha...
Hogyan lehet egy parancs lefutásakor kiíratni a dátumot a terminálban?
Előre is köszi!
-
beloadjoker
őstag
-
-
Headless
őstag
válasz
beloadjoker #2139 üzenetére
Ez attól függ mi a környezet, az évszámok utáni részt is rakd be a \2-be. szóköz, end line, field separator, stb az 19 elé meg szintén berakhatod ezeket.
Viszont én a te megoldásodon annyit javítanék, hogy a 19 után nem engedném hogy 0-9 legyen mert akkor az 1993-at is át fogja írni, ami valószínű nem elírás... Ezért én maximum [0-1][0-9]-et engednék meg. Még ígyis 2019-ig fogja változtatni
Szerk: azért elég furcsa egy adatbázis ez... Semmi rendszeresség...
-
spammer
veterán
válasz
beloadjoker #2139 üzenetére
$ cat evszamok.txt
1908
1922
1938
1522
2012
$ awk '/^19[0-9]{2}$/{sub("19","20");print}' evszamok.txt
2008
2022
2038Biztos van egyszerűbb megoldás is, de nekem most még korán van, elsőre ez jött.
-
beloadjoker
őstag
válasz
beloadjoker #2138 üzenetére
Hali srácok ezt szeretném megcsinálni:
Elírás történt egy fájlban. Hogyan cserélné le a 19-cel kezdődő évszámokat 20-val kezdődőre. (évszám 4 karakter!):
pl.:1908 --> 2008sed 's/\(19\)\([0-9][0-9]\)/20\2/g' a
Az a bajom hogy nem csak a 4 számból állókat írja át szóval szerintem be kéne szúrni valahova ezt: {4} de nem sikerül, tudnátok segíteni?
-
Headless
őstag
válasz
beloadjoker #2136 üzenetére
jah most nézem akkora ellentmondás van a field numberes szűrésemben...
nagyobb 2-nél és kisebb 3-nál...
mindegy a lényeget gondolom értetted.
-
Headless
őstag
válasz
beloadjoker #2134 üzenetére
awk '/^[A-Z][a-z]+ [A-Z][a-z]+/{print "Sorszám: "NR" szavak száma: "NF" "$2" "$1}'
Persze az még mindig kérdéses mi van a 3 nevűekkel. ott a 3.-kat elveszted vagy simán kiprinteled, a 3.-kat is.
Idézőjel azért kell, hogy a print tudja hogy nem változót akarsz használni, hanem egyszerű stringet.
ahogy látszik a mintában vannak beépített változók awk-ban, azokat használhatod
googleben hamar megtalálhatod őket.[link]Vagy esetleg még a filed numberre is szűrhetsz
awk 'NF>2&&NF<3&&/^[A-Z]/{print ....}'
mondjuk persze mindig lehet finomítani.
-
spammer
veterán
válasz
beloadjoker #2132 üzenetére
Valami ilyesmi esetleg:
awk '/^[A-Z]+/{print $2" "$1}'
szerk: és a $2 és $1 ugye két mezőt printel, ha valakinek 3 részből áll a neve (pl. Kiss Elemér Géza), akkor az bukta, erre figyelj majd.
-
beloadjoker
őstag
válasz
spammer #2131 üzenetére
jaj tényleg a szóköz
egyébként rendben de és ha nem csak az van benne?
Pl itt ahogy látom nem is jó: első kettő elmegy "névnek" de harmadik már nem mivel a második szó nem nagybetűvel kezdődik mégis kiírtaj@ubuntu:~/Documents$ cat nevek.txt
Kis András
Asdfs Psdfsd
SDFsdf sdfsdfsdf
j@ubuntu:~/Documents$ awk '/[a-zA-Z]+/{print $2" "$1}' nevek.txt
András Kis
Psdfsd Asdfs
sdfsdfsdf SDFsdf*
Jó pár feladat mögöttem van már de ezek nem mentek azért írtam hátha tudtok segíteni
-
spammer
veterán
válasz
beloadjoker #2130 üzenetére
Te írtad a regexet, én csak beraktam awk-ba. Ha csak simán nevek vannak a fájlban felsorolva egymás alá, akkor nem is kell. Például:
$ cat nevek.txt
Kiss Béla
Nagy Józsi
Takács Endre
$ awk '{print $2" "$1}' nevek.txt
Béla Kiss
Józsi Nagy
Endre TakácsA " " az egy szóköz, különben ez lesz:
awk '{print $2 $1}' nevek.txt
BélaKiss
JózsiNagy
EndreTakácsszerk: a házi feladat többi rész rád vár.
Sok példa van neten, meg tutorialok is, nulláról nem írja meg helyetted senki, főleg konkrét példa/feladat nélkül.
-
beloadjoker
őstag
válasz
spammer #2129 üzenetére
Köszönöm, esetleg kis magyarázatot adnál?
Főleg ez a része nem tiszta:
/[a-zA-Z]+/
de az sem hogy $2 után $1 elé miért kell "-jel+Ha már így benne vagyunk lenne még egy feladat:
Hogyan tudná a valami.txt fájl tartalmát megjeleníteni awk segítségével úgy hogy minden sor elejére írja ki a
sorok és az aktuális sorban szereplő szavak számát is? -
spammer
veterán
válasz
beloadjoker #2128 üzenetére
Felesleges a cat és a grep. awk érti a regexet és tud bementeni fájlt olvasni.
Valami ilyesmi, de a konkrét fájltól is függ.
awk '/[a-zA-Z]+/{print $2" "$1}' nevek.txt
-
beloadjoker
őstag
Hali srácok egy paranccsal lenne problémám vagyis egy feladattal tudnátok segíteni?
Adott a nevek.txt állomány. Mely paranccsal tudná a fájlban található magyarosan írt neveket /nagybetűvel kezdődő utána kisbetű majd ismét/ angolosan megjeleníteni /felcserélni az első és a második nevet/?
Próbálkoztam de enm jön össze idáig jutottam:
cat nevek.txt | egrep '[A-Z][a-z]+' | awk '{print $2 $1}'
-
doc
nagyúr
válasz
bambano #2126 üzenetére
nincs olyan hogy 'unix shell regexp', amire te annak hivsz az sima glob expression
egyebkent az altala adott peldabol is egyertelmu volt hogy regexpet keres nem pedig shell filemaskot
MOD: amennyiben utobbi csak utolag kerult bele a valaszom utan, akkor a fenti termeszetesen targytalan
-
bambano
titán
unix shell reguláris kifejezést keresett, nem szabvány regexpet.
tehát jó.
bambano@bruti:/tmp/3$ touch back.js
bambano@bruti:/tmp/3$ touch backe.js
bambano@bruti:/tmp/3$ touch backen.js
bambano@bruti:/tmp/3$ touch backend.js
bambano@bruti:/tmp/3$ touch backend-.js
bambano@bruti:/tmp/3$ touch backend-3.js
bambano@bruti:/tmp/3$ touch backend-3.js
bambano@bruti:/tmp/3$ touch backend-34.js
bambano@bruti:/tmp/3$ touch backend34.js
bambano@bruti:/tmp/3$ touch backend345.js
bambano@bruti:/tmp/3$ ls -l backend*.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend345.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-34.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend34.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-3.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend.jsa második kérdésében a grep -E-t kérdezte, az nem unix shell regexp, hanem extended szabvány regexp.
tehát az első kérdésére az én válaszom helyes. hogy a második kérdéséből az derült ki, hogy nem is ezt akarta kérdezni, az mvp -
Jim-Y
veterán
Sziasztok, egy unix shell reguláris kifejezésre lenne szükségem, de nem tudom összehozni :/
Egy csomó mindent próbáltam amiket nem fogok belinkelni, de ezt szeretném:^(backend)*(.js)$
Tehát "backend" -el kezdődjön és ".js"-re végződjön. Nem sikerül összehozni :/
Edit: na mire leírtam úgy tűnik, hogy ez működik: '^(backend).*(.js)$
Üdv
-
spammer
veterán
válasz
DrojDtroll #2119 üzenetére
bash+python kombóval van ilyesmi: pmenu
-
DrojDtroll
veterán
válasz
Jester01 #2118 üzenetére
Akkor javítok rajta.
Van kb 600 kisebb program. Amelyekből el kell indítanom az egyiket.
Az elképzelés az lenne hogy ha leütök egy betűt akkor az olyan betűvel kezdődő fájlok kerüljenek kilistázásra. Max 10 darab. Ha még egy betűt betűt leütök akkor az előző két betűvel kezdődő fájlok kerüljenek kilistázásra ugyan azon a helyen ahol az előző találatok. És így tovább.
Ha fájlok helyett egy fájl soraival is működik a dolog az még jobb.
-
Jester01
veterán
válasz
DrojDtroll #2117 üzenetére
Nyilván lehet, de azért ez eléggé pontatlan specifikáció.
-
spammer
veterán
válasz
DrojDtroll #2115 üzenetére
Izé, lehet, hogy félreértettem. Keresési találatokra gondoltam, hogy a talált kulcsszavak esetén a kulcsszó környezetében írjon még ki mondjuk 1-2 sort.
Ha arra gondolsz, hogy elkezdesz gépelni valamit és közben dob fel találatokat és minden billentyű leütésnél frissül, azt passzolom.
-
spammer
veterán
válasz
DrojDtroll #2113 üzenetére
awk, grep, ilyesmikkel megoldható.
-
DrojDtroll
veterán
Google keresési javaslatokhoz hasonlót meg lehetne valósítani?
Mondjuk egy fájl soraiban akarunk keresni, vagy egy mappa fájljaiban.
-
olivera88
veterán
válasz
dabadab #2110 üzenetére
Értem. Köszi. De a letöltés most se akar jó lenni valamiért.
Most is HTML fájl töltődik.
#!/bin/bash
# access token
TOKEN="__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__"
# file size min and max values - if the file's size falls outside of this range it is considered faulty
MIN_SIZE="38797312"
MAX_SIZE="45088768"
# time range - how many hour's data a single file contains
RANGE=12
function download_file()
{
# end time
TO="$1"
# start time - it is calculated a little oddly
FROM=$((${TO}-${RANGE}))
if [ $FROM -gt 0 ] ; then
FROM=$(($FROM+1))
fi
# add leading zeroes if needed
FROM="$(printf "%02d" "${FROM}")"
RANGE="$(printf "%02d" "${RANGE}")"
# url of the data
URL="http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=${__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__}&model=ARPEGE&grid=0.1&package=SP1&time=${FROM}H${TO}H&referencetime=$(date +'%Y-%m-%d')T${RANGE}:00:00Z"
# output file name
OUT_FILE="ARPEGE_SP1_${TO}H.grib2"
while true ; do
# get the file
wget "${URL}" -O "${OUT_FILE}"
# check the filesize
size=$(stat -c \%s "${OUT_FILE}" )
if [ $size -ge "${MIN_SIZE}" -a $size -le "${MAX_SIZE}" ] ; then
# size is OK, leave loop
break
else
# something went wrong, wait a little and retry
sleep 5m
fi
done
}
for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
sleep 5m
done -
dabadab
titán
válasz
olivera88 #2109 üzenetére
"Úgyhogy az első sor törölhető akkor ugye?"
Nem, ott meg kell adni a tokent, mert anélkül a jelek szerint nem megy, azért kapsz html file-t. Akkor azt visszarakom.
"Ezt hogy érted hogy size változó értékét felül írom? Mivel?"
A következő file méretével, amikor ott van egymás után sokszor a "size=" kezdetű sor, akkor minden sorban új értéket adsz a size-nak és csak a legutolsód ellenőrzöd.
"Amúgy nem így akartam megoldani, hanem úgy hogy szétbontom az összes fájl ellenőrzést, és berakom a letöltések után, nem mint most hogy a végén ellenőrzi az egészet csak."
Ami scriptet írtam, az így van, minden egyes file-t a letöltése után vizsgál meg, nem pedig egyben a végén.
"Meg ez hogy van beállítva? Hogy egyszerre töltse le az összes fájlt? Mert úgy nem lehet, vagyis lehet, de én fokozatosan akarom, mivel nem egyszerre frissülnek a szerveren a fájlok, hanem fokozatosan."
Vagyis várni akarsz az egyes file-ok letöltése után? Ha erről van szó, akkor azt a külső ciklusban gond nélkül megteheted:
for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
donehelyett az kell, hogy (ha pl. 10 percet akarsz várni):
for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
sleep 10m
done -
olivera88
veterán
válasz
dabadab #2108 üzenetére
Nincs semmi gond a tokennel, mert publikus mindenki számára a letöltés. Úgyhogy az első sor törölhető akkor ugye? Meg amúgy se tudnának semmit se kezdeni a grib2 fájlokkal.
Ezt hogy érted hogy size változó értékét felül írom? Mivel? Amúgy nem így akartam megoldani, hanem úgy hogy szétbontom az összes fájl ellenőrzést, és berakom a letöltések után, nem mint most hogy a végén ellenőrzi az egészet csak.
Nem működik a letöltés. Csak egy HTML fájl töltődik le a gribek helyett. Meg ez hogy van beállítva? Hogy egyszerre töltse le az összes fájlt? Mert úgy nem lehet, vagyis lehet, de én fokozatosan akarom, mivel nem egyszerre frissülnek a szerveren a fájlok, hanem fokozatosan. -
dabadab
titán
válasz
olivera88 #2107 üzenetére
Aha, ez így nagyon nem jó
Az alapvető hiba az, hogy a size változó függvényét simán felülírod anélkül, hogy az előző értékét vizsgálnád, aztán ha jó, akkor újra azonnal letöltöd, ha meg nem, akkor vársz és újra megnézed (az azóta nyilván változatlan file méretet
)
Megcsináltam belőle egy normális változatot (a tokent írd bele vissza, azt töröltem az eddigi hozzászólásaidból is, mert az szerintem nem publikus információ):
szerk: észrevettem benne egy kis hibát, javítottam
#!/bin/bash
# access token
TOKEN="__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__"
# file size min and max values - if the file's size falls outside of this range it is considered faulty
MIN_SIZE="38797312"
MAX_SIZE="45088768"
# time range - how many hour's data a single file contains
RANGE=12
function download_file()
{
# end time
TO="$1"
# start time - it is calculated a little oddly
FROM=$((${TO}-${RANGE}))
if [ $FROM -gt 0 ] ; then
FROM=$(($FROM+1))
fi
# add leading zeroes if needed
FROM="$(printf "%02d" "${FROM}")"
RANGE="$(printf "%02d" "${RANGE}")"
# url of the data
URL="http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=${TOKEN}&model=ARPEGE&grid=0.1&package=SP1&time=${FROM}H${TO}H&referencetime=$(date +'%Y-%m-%d')T${RANGE}:00:00Z"
# output file name
OUT_FILE="ARPEGE_SP1_${TO}H.grib2"
while true ; do
# get the file
wget "${URL}" -O "${OUT_FILE}"
# check the filesize
size=$(stat -c \%s "${OUT_FILE}" )
if [ $size -ge "${MIN_SIZE}" -a $size -le "${MAX_SIZE}" ] ; then
# size is OK, leave loop
break
else
# something went wrong, wait a little and retry
sleep 5m
fi
done
}
for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
done -
olivera88
veterán
válasz
dabadab #2106 üzenetére
Közben megoldódott done , + exit helyett break. Done + exittel mintha nem működött volna úgy emlékszem.
De a több fájlos ellenőrzés még se működik.
Jók a méretek, és mégis újra kezdi a letöltést.
Ez lenne az.#!/bin/sh
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=00H12H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_12H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=13H24H&referencetime=$(date +"%Y-%m-%d")T06:00:00Z" -O ARPEGE_SP1_24H.grib2
# új letöltés
sleep 6m
continue
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=25H36H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_36H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=37H48H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_48H.grib2
# új letöltés
sleep 5m
continue
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=49H60H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_60H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=61H72H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_72H.grib2
while true
do
size=$(stat -c \%s ARPEGE_SP1_12H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_24H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_36H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_48H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_60H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_72H.grib2 )
if [ $size -lt 38797312-o $size -gt 45088768 ]
then
# hiba, varj 10 percet
sleep 5m
# probald ujra
continue
fi
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=00H12H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_12H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=13H24H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_24H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=25H36H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_36H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=37H48H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_48H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=49H60H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_60H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=61H72H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_72H.grib2
exit 0
done[ Módosította: dabadab ]
-
dabadab
titán
válasz
olivera88 #2105 üzenetére
A while-ok végén kimaradtak a done-ok, azt reklamálja.
A formázási lehetőség között van olyan, hogy "Programkód", kód beírásakor használd azt, mert az megőrzi a formázást meg a speciális karaktereket (szögletes zárójelek, meg zárójel elé tett kettőspontból sem lesz smiley).
-
olivera88
veterán
válasz
olivera88 #2104 üzenetére
Ez megoldva.
Egymás után beraktam ugyanezt többi fájlok nevével. És jó.
De lenne egy másik dolog.Ezt hogy kellene kijavítani h működjön?
#!/bin/sh
while true
dosize=$(stat -c \%s ARPEGE_SP1_12H.grib2)
size=$(stat -c \%s ARPEGE_SP1_24H.grib2)
if [ $size -lt 38797312 -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fi
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_00_12.py
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_13_24.pySZERVER='x'
FELHASZNALO='x'
JELSZO='x'ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP06.png
send ARPEGEPCP12.png
send ARPEGEPCP18.png
send ARPEGEPCP24.pngEOF
while true
dosize=$(stat -c \%s ARPEGE_SP1_36H.grib2)
size=$(stat -c \%s ARPEGE_SP1_48H.grib2)
if [ $size -lt 38797312 -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fipython /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_25_36.py
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_37_48.pySZERVER='x'
FELHASZNALO='x'
JELSZO='x'ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP30.png
send ARPEGEPCP36.png
send ARPEGEPCP42.png
send ARPEGEPCP48.pngEOF
while true
dosize=$(stat -c \%s ARPEGE_SP1_60H.grib2)
size=$(stat -c \%s ARPEGE_SP1_72H.grib2)
if [ $size -lt 38797312 -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fipython /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_49_60.py
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_61_72.pySZERVER='x'
FELHASZNALO='x'
JELSZO='x'ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP54.png
send ARPEGEPCP60.png
send ARPEGEPCP66.png
send ARPEGEPCP72.png
exitEOF
Ezt a hibaüzenetet kapom így.
/Run_model3.sh: 120: ./Run_model3.sh: Syntax error: end of file unexpected (expecting "done")Ha kiszedem az EOF okat a feltöltés végéről akkor lefut a script de nem jó, mert invalid commandokat ir a többi python script futtatására.
-
olivera88
veterán
Jester01 írta nekem pár napja ezt a fájl ellenőrzést scriptet.
while true
do
size=$(stat -c39845888 \%s ARPEGE_SP1_72H.grib2)
if [ $size -lt -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fi
#csinald meg amit kell
...
# kész nem kell újra
exit 0
doneNa és az lenne a kérdésem hogy a méret ellenőrzésnél meglehetne e adni több fájl nevet, és ha igen hogyan? Mert többet szeretnék letölteni és több fájlt kellene ellenőrizni.
-
olivera88
veterán
Na most melyik ami a legjobb?
Jester első megoldása végül is? Most valamiért nem lett jó, nem írta felül a régi grib fájlt, és megcsinálta tegnapiból. A letöltésbe még nem tettem bele az ellenőrzést.
-
Jester01
veterán
Erre tessék: batch programozás
Új hozzászólás Aktív témák
- Google Pixel topik
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- One mobilszolgáltatások
- Debrecen és környéke adok-veszek-beszélgetek
- OLED TV topic
- E-roller topik
- Házimozi haladó szinten
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Trollok komolyan
- További aktív témák...
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Eladó Steam kulcsok kedvező áron!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- BESZÁMÍTÁS! ASUS H170M i7 6700 16GB DDR4 512GB SSD GTX 1660 Ti 6GB KOLINK Observatory Lite TT 500W
- LG 25GR75FG - E-Sport Monitor - FHD 360Hz 1ms - NVIDIA Reflex + G-sync - AMD FreeSync - HDR 400
- Hibás! Dísznek, Porfogónak, tesztkártyának vagy böngészni! Asus Rog Strix RX 470 4GB Videokártya.
- AKCIÓ! ASUS TUF GAMING X670E-PLUS WiFi alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! Intel Core i7 4790 4 mag 8 szál processzor garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest