Jakub Jelínek oznámil vydání verze 15.1 (15.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 15. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
Článek na Libre Arts představuje baskytarový multiefekt Anagram od společnosti Darkglass Electronics. S Linuxem uvnitř (licence, GitHub).
Městský soud v Praze vyhlásil rozsudek, který vyhověl žalobě novináře Jana Cibulky, který s podporou spolku IuRe (Iuridicum Remedium) požadoval omluvu od státu za to, že česká legislativa nařizuje operátorům uchovávat metadata o elektronické komunikaci. To je přitom v rozporu s právem. Stát se musí novináři omluvit a zaplatit náklady řízení. Především je ale součástí přelomové rozhodnutí o nelegálnosti shromažďování dat a o
… více »Americké technologické firmy Apple a Meta Platforms porušily pravidla na ochranu unijního trhu, uvedla včera Evropská komise (EK). Firmám proto vyměřila pokutu – Applu 500 milionů eur (12,5 miliardy Kč) a Metě 200 milionů eur (pět miliard Kč). Komise to oznámila v tiskové zprávě. Jde o první pokuty, které souvisejí s unijním nařízením o digitálních trzích (DMA). „Evropská komise zjistila, že Apple porušil povinnost vyplývající z nařízení
… více »Americká společnost OpenAI, která stojí za chatovacím robotem ChatGPT, by měla zájem o webový prohlížeč Chrome, pokud by jeho současný majitel, společnost Google, byl donucen ho prodat. Při slyšení u antimonopolního soudu ve Washingtonu to řekl šéf produktové divize ChatGPT Nick Turley.
Po roce vývoje od vydání verze 1.26.0 byla vydána nová stabilní verze 1.28.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.28.
Byla vydána nová verze 10.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 211 vývojářů. Provedeno bylo více než 2 800 commitů. Přehled úprav a nových vlastností v seznamu změn.
42 svobodných a otevřených projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Zdravim potreboval bych prehlednejsi vypis nez da iwlist jenze vse co sem nasel je prot atheros a to mi s bcm43xx nefunguje.
iwlist wlan0 scan | egrep -i 'address|essid|key|quality|frequency'
Cell 01 - Address: 00:4F:62:1F:50:CD
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=61/70 Signal level=-49 dBm
Encryption key:on
ESSID:"NET"
jak udelat aby vypsal
essid Address key signal Ch Freq
----------------------------------------------------------------
"NET" 00:4F:62:1F:50:CD on 61/70 , -49 dBm 1 2.412 GHz
nerozumim tomu jak udelat script kdyz vypis muze byt ruzne dlouhy protoze pokazde iwlist vypise jinak dlouhej seznam
nemate nekdo neco s awkem nebo sedem ci takneco co by udelalo podobny jednoradkovy vypis vsech siti ?
Dekuju
iwlist wlan0 scan | grep ESSID | cut -d":" -f 2 | sed 's/\"//g' a iwlist wlan0 scan | grep Quality | cut -d "=" -f2 | cut -d "/" -f1 a jiné přeci při každém iwlist mi vyjede jinej seznam tak jak vyjmout ty rozsahy ? nebo awk : iwlist wlan0 scanning| awk '/Cell/ {print $5}; /ESS/ {print substr($1,7)}; /Freq/ {print substr($1,11)}; /Qual/ {print substr($1,9)}; /Encr/ {print substr($2,5)}'no ale jak tomu dát formu a aby to jelo při více sítích a byla každá na jiném řádku ? no prostě se snažim o něco jako http://www.simandl.cz/stranky/linux/wifimon/soubory/wifimon-0.5.5 klidně i s tim výpisem wbaru na konci ...
BEGIN {
cnt=0;
}
END {
print "Address essid key signal Ch Freq";
print "----------------------------------------------------------------";
for (i=0; i<cnt; i++)
print cells[i, "addr"], " ", cells[i, "essid"];
}
/ESSID/ {
x=match($0, "\".*\"");
cells[cnt-1, "essid"]=substr($0, x);
}
/Cell [0-9]+.*Address:.* .*$/ {
cells[cnt, "addr"]=$5;
cnt+=1;
}
a potom iwlist wan0 scan | awk -f file.awk
iwlist ... | while read line; do if [[ $line == ... ]]; then ..... fi done
#!/usr/bin/python import re, sys c = re.compile(r'(?ms)' r'^ Cell (?P<cell>\d+) - Address: (?P<addr>[0-9A-F:]+)\n' r'(?P<info>(?: [^\n]*\n)*)') def getgroup(info, name): m = re.search(r'(?m)^ %s\s*(?P<value>.*)$' % name, info) if m: return m.group('value').rstrip() return '' print '''\ ----------------------------------------------------------------------- essid address key signal frequency -----------------------------------------------------------------------''' fmt = '%16s %17s %3s %14s %s' for x in c.finditer(sys.stdin.read()): addr = x.group('addr') info = x.group('info') essid = getgroup(info, 'ESSID:') encrypted = getgroup(info, 'Encryption key:') channel = getgroup(info, 'Channel:') frequency = re.sub(r'\s*\(.*', '', getgroup(info, 'Frequency:')) signal = getgroup(info, 'Quality=').replace('Signal level=', '') print fmt % (essid, addr, encrypted, signal, frequency)
A jeste přídám jeden skript pro priznivce sedu :)
iwlist ath0 scanning | sed -n -e '/ESSID/p;/Cell/p;/Frequency/p;/Quality/p;' | \
sed -e '$!N;N;N;s/.*Cell \([0123456789]*\) - Address: \(.*\)\n.*ESSID:"\(.*\)"\n.*Frequency:\([0123456789\.]*\) GHz (Channel \([0123456789]*\)).*\n.*Signal level[=:]\(.*\) .*Noise level[=:]\(.*\)/<tr><td> \1 <td>\3 <td>\2 <td><center>\5<\/center> <td>\4 <td>\6 <td>\7/'
Vysledek je videt zde:
http://78.108.103.11:11080/cgi-bin/aplist.cgi
#!/bin/bash a=0;b=0;c=0;d=0;e=0;f=0;g=0;h=0;x=0 echo ----------------------------------------------------------------- echo "Ch Essid Bssid Frekvence Kvalita Signal Kodovani Mod" echo ----------------------------------------------------------------- while read line;do [ "`echo $line | grep ESSID`" ] && essid[$a]=`echo "$line" | cut -d : -f 2 | grep -o '[a-z,A-Z,0-9]*'` [ "`echo $line | grep Address`" ] && address[$b]=`echo "$line" | awk '{print $5}'` [ "`echo $line | grep Channel:`" ] && channel[$c]=`echo "$line" | cut -d : -f 2 ` [ "`echo $line | grep Freq`" ] && freq[$d]=`echo "$line" | awk '{print $1}' | cut -d : -f 2` [ "`echo $line | grep Quali`" ] && qual[$e]=`echo "$line" | awk '{print substr($1,9)}'` [ "`echo $line | grep Signal`" ] && signal[$f]=`echo "$line" | awk '{print substr($3,7,3)}' ` [ "`echo $line | grep key`" ] && key[$g]=`echo "$line" | awk '{print substr($2,5,15)}' ` [ "`echo $line | grep Mode`" ] && mode[$h]=`echo "$line" | awk '{print substr($1,6,15)}' ` done < <(iwlist scan 2>/dev/null ) while [ $x -lt ${#essid[@]} ];do echo ${channel[$x]} , ${essid[$x]} , ${address[$x]} , ${freq[$x]} , ${qual[$x]} , ${signal[$x]} , ${key[$x]} , ${mode[$x]} (( x++ )) doneTak jen nevim jak udelat aby se sloupecky pevne vypisovaly vzdy na stejnem miste bez pouziti tabulatoru (jen s mezerama) kdyz delky nazvu siti mohou byt ruzne a take hodnoty.
user@NB-Pepe:~$ ./script ----------------------------------------------------------------- Ch Essid Bssid Frekvence Kvalita Signal Kodovani Mod ----------------------------------------------------------------- 1 , NET , 00:4F:62:1F:50:CD , 2.412 , 63/70 , -47 , on , Master 2 , SauronNet Cheb20 , 00:02:72:71:5D:08 , 2.417 , 14/70 , -96 , off , Master 7 , ALLCMPA , 00:4F:62:17:CF:BD , 2.442 , 34/70 , -76 , on , Master 6 , ALLCMP , 00:4F:62:00:4D:81 , 2.437 , 49/70 , -61 , on , Master 7 , APD17P , 00:4F:62:17:E3:39 , 2.442 , 30/70 , -80 , on , Master user@NB-Pepe:~$ #!/bin/bash a=0;b=0;c=0;d=0;e=0;f=0;g=0;h=0;x=0 echo ----------------------------------------------------------------- echo "Ch Essid Bssid Frekvence Kvalita Signal Kodovani Mod" echo ----------------------------------------------------------------- while read line;do [ "`echo $line | grep ESSID`" ] && essid[$a]=`echo "$line" | cut -d : -f 2 | grep -o '[a-z,A-Z,0-9]*'` && ((a++)) [ "`echo $line | grep Address`" ] && address[$b]=`echo "$line" | awk '{print $5}'` && ((b++)) [ "`echo $line | grep Channel:`" ] && channel[$c]=`echo "$line" | cut -d : -f 2 ` && ((c++)) [ "`echo $line | grep Freq`" ] && freq[$d]=`echo "$line" | awk '{print $1}' | cut -d : -f 2` && ((d++)) [ "`echo $line | grep Quali`" ] && qual[$e]=`echo "$line" | awk '{print substr($1,9)}'` && ((e++)) [ "`echo $line | grep Signal`" ] && signal[$f]=`echo "$line" | awk '{print substr($3,7,3)}' ` && ((f++)) [ "`echo $line | grep key`" ] && key[$g]=`echo "$line" | awk '{print substr($2,5,15)}' ` && ((g++)) [ "`echo $line | grep Mode`" ] && mode[$h]=`echo "$line" | awk '{print substr($1,6,15)}' ` && ((h++)) done < <(iwlist wlan0 sc 2>/dev/null ) while [ $x -lt ${#essid[@]} ];do echo ${channel[$x]} , ${essid[$x]} , ${address[$x]} , ${freq[$x]} , ${qual[$x]} , ${signal[$x]} , ${key[$x]} , ${mode[$x]} (( x++ )) done
grep
, a to s velkou nadějí na vítězství. Na každý řádek výstupu se spouští osmkrát grep + několik dalších zbytečných programů, pokud se daná položka náhodou najde.
Používáš tam awk, tak si to napiš celé v awk, když neumíš python (perl, ruby, něco rozumného), ale do jednoho skriptu pro awk. Šlo by to i v sedu, v pythonu jsem to napsal, jak jsem to napsal, aby moc nezáviselo na změnách formátu (např. pořadí položek, řada změn to ošem i tak rozbije), ale to je zjevně házení perel sviním...
#!/usr/bin/perl # use strict; my @scan = `/sbin/iwlist scan`; push @scan, ' Cell'; my @list = (); my $cnt = -1; foreach my $line (@scan) { SW: for ($line) { /^\s*Cell/ && do { if ($cnt >= 0) { my $bar = ''; for (my $i = 0; $i <= $list[$cnt]{signal}; $i++) {$bar .= '#';} #for (my $i = abs($list[$cnt]{signal}); $i <= abs($list[$cnt]{noise}); $i++) {$bar .= '#';} $list[$cnt]{bar} = $bar; $line =~ s/Cell//; } $cnt++; redo SW }; /Address:\s+(\S+)/ && do { $list[$cnt]{addr} = $1; last SW; }; /^\s+ESSID:/ && do { ($list[$cnt]{id}) = $line =~ /(".*")/; last SW; }; /\(Channel\s+(\d+)\)/ && do { $list[$cnt]{ch} = $1; last SW; }; /^\s+Quality/ && do { ($list[$cnt]{signal}, $list[$cnt]{noise}) = $line =~ /Quality=(\d+)\/(\d+)/; #($list[$cnt]{signal}, $list[$cnt]{noise}) = $line =~ /Signal level=(-?\d+).*Noise level=(-?\d+).*/; last SW; }; /^\s+Encryption key:(.*)/ && do { $list[$cnt]{key} = $1; last SW; } } } foreach my $cell (sort {$a->{ch} <=> $b->{ch}} @list) { printf "Address: %17s Channel: %2s key:%3s ESSID: %s\n", $$cell{addr}, $$cell{ch}, $$cell{key}, $$cell{id}; printf "%4s/%4s %s\n", $$cell{signal}, $$cell{noise}, $$cell{bar}; }
Tiskni
Sdílej: