Kis segítséget kérnék nmcli ügyben.
Az nmcli egy kényelmes szkriptelhető eszköz a hálózati kapcsolatok kezelésére. Van rá mód, hogy megállapítsam van-e a számítógépről kifelé irányuló (nem belső virtuális) kapcsolat. Arra nem találtam megoldást, hogy ha van kapcsolat akkor az melyik hálózati eszközt vagy hálózati kapcsolatot jelenti pontosan.
Kapcsolati státusz lekérdezése:
$ nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full disabled disabled enabled disabled
STATE állapota:
connected - fizikai hálózati eszköz kapcsolódva.
connected (local only) - fizikai hálózati eszköz nincs kapcsolódva, csak pl. virtuális hálózati eszköz (vmnet1).
disconnected - semmilyen kapcsolat nincs jelen.
Arra vonatkozólag nincs infó, hogy a "connected" esetén pontosan melyik eszköz és/vagy kapcsoaltról van szó.
Hálózati eszközök lekérdezése:
$ nmcli device status
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected DHCP
vmnet1 ethernet connected vmnet1
vmnet8 ethernet connected vmnet8
wlan0 wifi unavailable --
lo loopback unmanaged --
Aktív hálózati kapcsolatok lekérdezése:
$ nmcli connection show --active
NAME UUID TYPE DEVICE
DHCP 9c41f813-5a7b-4b59-a81b-444c10c383f9 802-3-ethernet eth0
vmnet8 c8887441-638d-43f3-a652-f96c44b4cc22 802-3-ethernet vmnet8
vmnet1 1e5e1056-f165-4f04-84cc-50f916200b29 802-3-ethernet vmnet1
Tehát a kérdésem a következő: Milyen módon lehetne összefüggést találni a kapcsolati státusz és az eszközök vagy hálózati kapcsolatok között?
Ha esetleg van (szkriptelhető) jobb módja a hálózat kezelésének mint az nmcli (vagy RTFM) akkor az is jó lehet.
A válaszokat előre is köszönöm.
- 1469 megtekintés
Hozzászólások
Egy éve futottam bele ebbe a problémában, sajnos nem találom konkrétan a megoldást amit sikerült összerakni, de ha jól emlékszem, interfész név alapján UUID-t meg lehet határozni, az alapján meg ki lehetett szedni a kapcsolatot.
szerk.: bocs, hülyeség amit írtam, az más probléma volt.
- A hozzászóláshoz be kell jelentkezni
De a státusz lekérdezés eredménye semmilyen utalást nem tesz eszközre vagy kapcsolatra.
$ nmcli -f all general status
RUNNING VERSION STATE STARTUP CONNECTIVITY NETWORKING WIFI-HW WIFI WWAN-HW WWAN
running 0.9.10.0 connected started full enabled disabled disabled enabled disabled
Ezért nem tudom sehogyan sem a "STATE = connected" értéket összepárosítani egy kapcsolattal vagy eszközzel.
Én viszont sajnos nem tudom megállapítani az eszközlistából vagy a kapcsolatlistából, hogy melyik valós (külső) hálózati kapcsolat és melyik csak egy helyi virtuális kapcsolat. Az eszközök és kapcsolatok neve bármi lehet ezért nem lehet arra építeni, hogy eth0 a hálózati eszköz neve.
- A hozzászóláshoz be kell jelentkezni
Kellene az a kapcsolat, amelyiken az internetet éred-el pl.? Vagy általánosan kellenének azok, amiken keresztül érhetsz el internetet?
- A hozzászóláshoz be kell jelentkezni
A következőket szeretném (nmcli-vel vagy más módon)
- Megállapítani, hogy van-e olyan hálózati kapcsolat ami nem helyi virtuális.
- Ha van kapcsolat akkor szükség lenne a hálózati eszköz részletes adataira (pl. kapcsolat sebessége, wifi/gsm térerő, stb.) és a hálózati kapcsolat részletes adataira (ip, átjáró, stb.)
- A hozzászóláshoz be kell jelentkezni
Köszi az infókat, remélem összejön, közben én is gondolkodom rajta. Pusztán nmcli-vel viszont nem biztos, hogy menni fog, mármint elképzelhető, hogy ezeket az infókat nem lehet kinyerni belőle.
- A hozzászóláshoz be kell jelentkezni
sysfs es proc?
Persze neked kell megirni a scripttet, de minden ott van.
- A hozzászóláshoz be kell jelentkezni
Rendben, de hogyan lehet egyértelműen eldönteni (nem tudom, hogy az nmcli hogyan csinálja), hogy van-e olyan kapcsolat és ha van akkor melyik az ami nem virtuális?
- A hozzászóláshoz be kell jelentkezni
tree /sys/class/net
/sys/class/net
├── docker0 -> ../../devices/virtual/net/docker0
├── eth0 -> ../../devices/pci0000:00/0000:00:1c.0/0000:01:00.0/net/eth0
├── lo -> ../../devices/virtual/net/lo
├── virbr0 -> ../../devices/virtual/net/virbr0
├── virbr0-nic -> ../../devices/virtual/net/virbr0-nic
└── wlan0 -> ../../devices/pci0000:00/0000:00:1c.3/0000:02:00.0/net/wlan0
ha van mogotte pci bus, akkor az valodi, ha meg ott a virtual akkor az nem valodi
- A hozzászóláshoz be kell jelentkezni
Nagyon gagyi megvalositassal :D
ls -l /sys/class/net | awk '{ if( /virtual/ ) { print "virtual -- "$9 } else { print "real -- "$9 }; system("ip addr show "$9" |grep -Po \"inet \\K[\\d.]+\" "); print "\n" }'
- A hozzászóláshoz be kell jelentkezni
BTW én úgy értelmeztem a posztolót, hogy neki az a virtuális amin nem az internet jön. :)
- A hozzászóláshoz be kell jelentkezni
Köszönöm az infót.
- A hozzászóláshoz be kell jelentkezni
nmcli d show `ip -o r get 1.1.1.1 | awk '{ print $3 }'`
- A hozzászóláshoz be kell jelentkezni
Nekem nem működik.
$ nmcli d show `ip -o r get 1.1.1.1 | awk '{ print $3 }'`
Error: Device '192.168.1.1' not found.
szerk:
$ ip r
default via 192.168.1.1 dev eth0 proto static metric 1024
172.16.200.0/24 dev vmnet8 proto kernel scope link src 172.16.200.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.101
192.168.68.0/24 dev vmnet1 proto kernel scope link src 192.168.68.1
Ezt tüzetesebben is megnézem.
- A hozzászóláshoz be kell jelentkezni
Az IP-t ha átírod vagy valamelyik interfészére vagy az átjáróéra, akkor fog, viszont ez is csak kiírja hogy kapcsolódva
- A hozzászóláshoz be kell jelentkezni
De pont az a problémám, hogy nem tudok ip címet, eszköz nevet vagy bármit ami alapján én el tudnám dönteni, hogy az adott hálózati kapcsolat / interfész helyi vagy sem.
Az "ip r" esetén kapok egy plusz információt ami talán segíthet:
default via 192.168.1.1 dev eth0 proto static metric 1024
- A hozzászóláshoz be kell jelentkezni
Bocs, ez talán robusztusabb:
route | grep ^default | grep -o '[^ ]*$'
- A hozzászóláshoz be kell jelentkezni
Tehát akkor a route tábla alapján tudom egyértelműen eldönteni, hogy az adott hálózati eszköz fizikai eszköz és nem virtuális?
- A hozzászóláshoz be kell jelentkezni
Azt tudod meg, hogy az internetre menő forgalom melyk interfészen megy ki. Egy "vmnet1" vagy "lo" interfészt ez nem ad vissza.
Viszont semmi garancia arra, hogy fizikai interfészt kapsz vissza. A default route ugyanis lehet vpn, bridge vagy bonding device, satöbbi. Ekkor egy újabb kör annak megállapítsa, hogy ezek alatt melyk fizikai interfészen megy a forgalom, amire nyilván nincs univerzális megoldás.
- A hozzászóláshoz be kell jelentkezni
Csak a route és társai elég régóta deprecated motyók - tessen az ip parancsot használni :-P
- A hozzászóláshoz be kell jelentkezni
nmtui -t ismered?
- A hozzászóláshoz be kell jelentkezni
Igen, de nem értem hogy segít a probléma megoldásában.
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni