Po vlastních microSD kartách nabízí nově Raspberry Pi také vlastní NVMe SSD disky. Samostatně i v sadách s M.2 HAT+.
Byla zveřejněna (𝕏) Zpráva o činnosti Digitální a informační agentury (DIA) za rok 2023 (pdf). Začíná slovy ředitele: "Vznik Digitální a informační agentury (DIA) je v posledních letech možná jedním z nejvýznamnějších kroků, který dodá potřebný impuls digitalizaci státní správy."
Vývojáři AlmaLinuxu představili AlmaLinux OS Kitten 10, tj. vývojovou verzi AlmaLinux OS 10 vycházejícího z CentOS Stream 10. Přehled novinek v poznámkách k vydání. Proč Kitten? Verze AlmaLinux OS jsou pojmenované podle kočkovitých šelem. Z kotěte vyroste další kočka.
Kryptografická knihovna OpenSSL byla vydána v nové verzi 3.4. Přehled změn na GitHubu.
Bylo objeveno nové největší prvočíslo. Jedná se o Mersennovo prvočíslo známé též jako M136279841. To znamená, že v binární formě je prvočíslo tvořeno 136 279 841 jedničkami. Objeveno bylo v rámci distribuovaného výpočetních projektu GIMPS (Great Internet Mersenne Prime Search). Zajímavostí je, že na rozdíl od předchozích takto objevených prvočísel nebylo objeveno pomocí CPU, ale na grafické kartě NVIDIA A100 s pomocí programu Gpuowl.
Protokol MQTT (Wikipedie) dnes slaví 25 let (Mastodon, 𝕏). První publikovaná specifikace je z 22. října 1999.
Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.4. Přehled novinek na GitLabu. Z novinek lze zmínit podporu telefonu Google Pixel 7. Na stránkách Murena lze koupit Murena Pixel 7.
Připojte se ve středu 30. 10. 2024 od 10:00 do 12:00 na náš webinář "Řízení přístupu do PostgreSQL prostřednictvím externího autentizačního providera" (registrace zdarma) a naučte se, jak nastavit ověřování pomocí GSSAPI pro bezpečný přístup k databázím (Microsoft Active Directory nebo FreeIPA). Záznam předchozího webináře "Co je nového v PostgreSQL 17" můžete zhlédnout zde.
… více »Byla vydána nová verze 0.55 open source počítačové hry Unvanquished (Wikipedie), forku počítačové hry Tremulous. Instalovat ji lze také z Flathubu.
Dle plánu bylo dnes vydáno Factorio 2.0 a Factorio: Space Age, tj. aktualizace 2.0 počítačové hry Factorio (Wikipedie) oficiálně běžící také na Linuxu a velké vesmírní rozšíření Factorio: Space Age.
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: