Byla vydána nová verze 10.2 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze nové balíčky Immich, Immich Machine Learning, uv a RustDesk Client.
TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 6.0. Příští verze 7.0 je kvůli výkonu přepisována do programovacího jazyka Go.
Christian Schaller z Red Hatu na svém blogu popsal své zkušenosti s používáním AI při vývoji open source aplikací pro Linux. Pomocí různých AI aktualizoval nebo vytvořil aplikace Elgato Light GNOME Shell extension, Dell Ultrasharp Webcam 4K, Red Hat Planet, WMDock, XMMS resuscitated (aktualizace z GTK 2 a Esound na GTK 4, GStreamer a PipeWire) a Monkey Bubble. SANE ovladač pro skener Plustek OpticFilm 8200i se mu zatím nepovedl.
Americké firmy Tesla a SpaceX postaví v texaském Austinu moderní komplex na výrobu čipů pro umělou inteligenci (AI). Součástí projektu s názvem Terafab budou dvě moderní továrny na výrobu čipů – jedna se zaměří na automobily a humanoidní roboty, druhá na datová centra ve vesmíru. Uvedl to generální ředitel těchto firem Elon Musk. Projekt by podle odhadů měl stát 20 miliard USD (zhruba 425 miliard Kč).
Byla vydána nová stabilní verze 6.11 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
Ubuntu 26.04 patrně bude ve výchozím nastavení zobrazovat hvězdičky při zadávání hesla příkazu sudo, změna vychází z nové verze sudo-rs. Ta sice zlepší použitelnost systému pro nové uživatele, na které mohlo 'tiché sudo' působit dojmem, že systém 'zamrzl' a nijak nereaguje na stisky kláves, na druhou stranu se jedná o možnou bezpečnostní slabinu, neboť zobrazování hvězdiček v terminálu odhaluje délku hesla. Původní chování příkazu sudo
… více »Projekt systemd schválil kontroverzní pull request, který do JSON záznamů uživatelů přidává nové pole 'birthDate', datum narození, tedy údaj vyžadovaný zákony o ověřování věku v Kalifornii, Coloradu a Brazílii. Jiný pull request, který tuto změnu napravoval, byl správcem projektu Lennartem Poetteringem zamítnut s následujícím zdůvodněním:
… více »Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 163 (pdf).
Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního
… více »Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.
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++ ))
done
Tak 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...
. Výpis je dvouřádkový, včetně signáloměru. Upravil jsem to aby to bralo signál z kvality, ne z úrovní. Bere to jakoukoliv wifinu, tak si když tak uprav, pokud jich máš více. Pro zvýšení diversity je to v perlu
#!/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: