Meta představila prototyp náramku, který snímá elektrickou aktivity svalů (povrchová elektromyografie, EMG) a umožňuje jemnými gesty ruky a prstů ovládat počítač nebo různá zařízení. Získané datové sady emg2qwerty a emg2pose jsou open source.
Byla vydána (𝕏) nová verze 25.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 25.7 je Visionary Viper. Přehled novinek v příspěvku na fóru.
Před 40 lety, 23. července 1985, společnost Commodore představila první počítač Amiga. Jednalo se o počítač "Amiga od Commodore", jenž byl později pojmenován Amiga 1000. Mělo se jednat o přímou konkurenci počítače Apple Macintosh uvedeného na trh v lednu 1984.
T‑Mobile USA ve spolupráci se Starlinkem spustil službu T-Satellite. Uživatelé služby mohou v odlehlých oblastech bez mobilního signálu aktuálně využívat satelitní síť s více než 650 satelity pro posílání a příjem zpráv, sdílení polohy, posílání zpráv na 911 a příjem upozornění, posílání obrázků a krátkých hlasových zpráv pomocí aplikace Zprávy Google. V plánu jsou také satelitní data.
Společnost Proxmox Server Solutions stojící za virtualizační platformou Proxmox Virtual Environment věnovala 10 000 eur nadaci The Perl and Raku Foundation (TPRF).
Byla vydána nová verze 2.4.65 svobodného multiplatformního webového serveru Apache (httpd). Řešena je bezpečnostní chyba CVE-2025-54090.
Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia AI asistenta Lumo.
Amazon koupil společnost Bee zaměřenou na nositelnou osobní AI aktuálně nabízející náramek Pioneer (YouTube) s mikrofony zaznamenávající vše kolem [𝕏, LinkedIn].
Společnost Teufel nedávno představila svůj první open source Bluetooth reproduktor MYND.
Byla vydána verze 4.2 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.
Dobry den, hledal jsem na netu zpusob jak zjistit IP adresu pocitace, nasel jsem dva zpusoby, akorat ze pro Ubuntu to funguje, ale pro debian ne, nevim jestli mam spatne nainstalovany debian, nebo se musi kod nejak upravit.
script:
#!/usr/bin/env python
import socket
hostname = socket.gethostname()
ip = socket.gethostbyname( socket.gethostname() )
print 'Hostname:', hostname
print 'IP adresa:', ip
Ubuntu:
Hostname: Ubuntu8
IP Adresa: 127.0.1.1
Debian:
Traceback (most recent call last):
File "./h", line 5, in <module>
ip = socket.gethostbyname( socket.gethostname() )
socket.gaierror: (-5, 'No address associated with hostname')
jiny zpusob
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <netdb.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void)
{
struct hostent *he;
char buf[80];
if(gethostname(buf,sizeof(buf))==-1) {
perror("gethostname");
exit(1);
}
printf("Host Name: %s\n", buf);
if((he=gethostbyname(buf))==0) {
herror("gethostbyname");
exit(1);
}
printf("Your Host Name: %s\n", he->h_name);
rintf("Your IP Address: %s\n", inet_ntoa(*((struct in_addr *)he->h_addr_list)));
return 0;
}
Ubuntu:
Host name: Ubuntu8
Your Host Name: Ubuntu8
Your IP Address: 127.0.1.1
Debian:
Host Name: debian
gethostbyname: Unknown host
Neco jsem snad prehlednul? jinak oba systemy bezi pres vmware, ale to by snad nemelo delat problem. Diky za pomoc
ip
nebo ifconfig
by nestacil? /etc/hosts
? Čo majú v /etc/nsswitch.conf
? Čo majú v /etc/resolv.conf
?
Tiež si uvedom, že jeden systém má viacero sieťových interface-ov (prinajmenošom loopback a sieťová karta) a každý z nich môže (a nemusí) mať jednu, alebo viac IP adries. A tie sa vôbec nemusia zhodovať s tým čo je v /etc/hosts, alebo tým čo hovorí DNS server.
P.S. zváž použitie getaddrinfo()
v /etc/hosts
127.0.0.1 localhost
127.0.1.1 debian.localdomain debian
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
/etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
/etc/resolv.conf
nameserver 212.158.128.2
nameserver 212.158.128.3
socket.gethostname()
na Debianu?
tak problem byl v tom ze v /etc/hostname byl nazev debian a v /etc/hosts byl zase nazev debian2, dal jsem stejny nazev a funguje to
priste radsi nebudu menit nastaveni site :), diky za pomoc vsem
to byl vypis z /etc/hosts ale jineho debiana,
127.0.1.1 debian.localdomain debian
ten co delal problem mel
127.0.1.1 debian.localdomain debian2
a v tom byl ten problem, kdyz jsem kdysi menil nazev pocitace, tak v /etc/host name zustal v obou verzich puvodni nazev debian
gethostname()
. Ak čírou náhodou vráti "localhost", tak sa to nájde v /etc/hosts a malo by to vrátiť 127.0.0.1. Ak to vráti debian alebo debian.localdomain, tak by to malo vrátiť 127.0.1.1. Ak to vráti niečo iné tak, sa pôjde na DNS server na 212.158.128.2. Keďže v resolv.conf nemáš search
, a gethostname() ti nedá doménu, tak sa na tom DNS serveri najskôr nič nenájde a skončí to s chybou.
Takže záleží na tom čo vráti gethostname().
moc jsem tomu nerozumnel, ale ted je mi to trosku jasnejsi, diky za vysvetleni :)
da se nejak jeste zjistit IP adresa pocitace v siti?
ip a ipconfig prikazy bych to mohl ulozit do souboru a pak nacist, ale neni i nejaky jiny zpusob jak s tim rovnou pracovat v programu?
Řešení jsi uvedl sám např. v Pythonu:
ip = socket.gethostbyname("www.google.com")
nebo Bashi:
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 72.14.221.99
www.l.google.com has address 72.14.221.103
www.l.google.com has address 72.14.221.104
A pokud to potřebuješ do proměné v Bashi:
$ IP=$(host www.google.com |tac |head -n1)
$ IP=${IP##* }
$ echo $IP
74.125.39.103
diky, ale chtel jsem IP adresu pocitace v lokalni siti, a jinak to pisu v C
takze chtel jsem v ubuntu(debianu) napsat aplikaci, ktera bude posilat soubor pres sockety po siti, takze budu potrebovat IP adresy klienta a serveru, a nechci je tam zadavat rucne tim ze bude nekde hledat v nastaveni a pak to tam psat, chtel sem si udelat funkci, ktera mi tu adresu zjisti automaticky
chtel jsem to mit tak ze spustim program na serveru, zjisti mi to jeho ip adresu v siti a tu pak napisu do klienta, nic sloziteho
Aha, takže Ti jde asi o to, že server dostane od dhcp pokaždé přidělenou jinou IP, v tom případě Ti řešení i s ukázkou napsal R níže. Dynamické je jenom IP, takže jen zavoláš:
ioctl(fd, SIOCGIFADDR, &ifr);
na zařízení ethX
v lokální sítí a přečteš si jeho IP ze struktury:
inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)
Tohle jsi chtěl?
sin_addr.s_addr
použij INADDR_ANY
a fcí setsockopt()
nastav level na SOL_SOCKET
, optname na SO_BROADCAST
a optval na 1
.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h> /* for strncpy */
#include <sys/ioctl.h>
#include <net/if.h>
#include <arpa/inet.h>
int main()
{
int fd;
struct ifreq ifr;
fd = socket(AF_INET, SOCK_DGRAM, 0);
strncpy(ifr.ifr_name, "eth1", IFNAMSIZ-1);
ioctl(fd, SIOCGIFADDR, &ifr);
close(fd);
printf("%s\n", inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));
return 0;
}
tak uz to funguje :)
lze nejak osetrit vyber sitovky? jestli to je eth0 nebo eth1? pokazde to vraci nejakou ip adresu, ale jen jedna sitovka je pripojena k lokalni siti
route
a hned uvidíš které zařízení patří do lokální sítě. Jak se to dělá v C uvidíš přímo ve zdrojáku tohoto příkazu, stačí si stáhnout zdrojáky balíčku net-tools
. Případně si můžeš zavolat příkaz route
přímo z C a pouze proparsovat jeho výstup.
mohl bys napsat nejaky priklad? moc by mi to pomohlo, nevim jak deklarovat ifr
promin nevsiml jsem si te ukazky, kde najdu presne zarizeni eth0 abych ho mohl vlozit do fd?
/etc/hosts
přidej k 127.0.0.1
jméno z /etc/hostname
. IP k danému hostname se hledá mimo DNS také v tomto souboru.
ip -o -4 a s dev eth0 | sed 's/.*inet\ \([0-9.]*\)\/.*/\1/'
diky, ale neznas jeste nejaky zpusob jak to dostat do programu a poracovat s tim jako se stringem?
Tiskni
Sdílej: