После дальнейшего расследования, которое подтверждено несколькими комментариями к этому сообщению, выяснилось, что команда
gsettings set org.gnome.desktop.media-handling automount false
работает так же, как и раньше.
Причина сбоя в этом случае, по всей видимости, была вызвана отсутствием установленных переменных среды, в частности $ DBUS_SESSION_BUS_ADDRESS
.
Повторим: команда действительно работает для Ubuntu 16.04, как и 14.04.
Более новые версии ip
могут выводить данные в формате JSON с параметром -j
, которые затем можно обрабатывать с помощью фильтра, такого как jq
. Например, это напечатает адрес IPv4 на интерфейсе eth0
:
$ ip -j addr show dev eth0 | jq -r '.[0].addr_info | map(select(.family == "inet"))[0].local'
192.168.0.1
Или получить список всех IPv4-адресов на машине, по одному в строке:
ip -j addr show | jq -r 'map(.addr_info) | map(map(select(.family == "inet").local)) | flatten |.[]'
127.0.0.1
192.168.0.1
172.19.0.1
172.17.0.1
172.18.0.1
Удалите select(...)
, чтобы включить, например, адреса IPv6. Возможны многие другие вариации.
Этот gawk
скрипт проанализирует ip addr show
, чтобы предоставить вам запрошенную информацию. Несколько адресов IPv4 объединяются запятой
ip a | awk 'function outline() {if (link>"") {printf "%s %s %s\n", iface, inets, link}} $0 ~ /^[1-9]/ {outline(); iface=substr($2, 1, index($2,":")-1); inets=""; link=""} $1 == "link/ether" {link=$2} $1 == "inet" {inet=substr($2, 1, index($2,"/")-1); if (inets>"") inets=inets ","; inets=inets inet} END {outline()}'
Разделить это, чтобы было читабельнее,
ip addr show |
awk '
# Output function to format results (if any)
function outline() {
if (link>"") {printf "%s %s %s\n", iface, inets, link}
}
# Interface section starts here
$0 ~ /^[1-9]/ {
outline(); # Output anything we previously collected
iface=substr($2, 1, index($2,":")-1); # Capture the interface name
inets=""; # Reset the list of addresses
link="" # and MAC too
}
# Capture the MAC
$1 == "link/ether" {
link=$2
}
# Capture an IPv4 address. Concatenate to previous with comma
$1 == "inet" {
inet=substr($2, 1, index($2,"/")-1); # Discard /nn subnet mask
if (inets>"") inets=inets ","; # Suffix existing list with comma
inets=inets inet # Append this IPv4
}
# Input processing has finished
END {
outline() # Output remaining collection
}
'
Пример вывода
eth0 10.0.2.15 08:00:27:0f:db:b3
eth1 192.168.56.101 08:00:27:33:04:26
в дебиане:
man ip
...
-o, -oneline
output each record on a single line, replacing line feeds with the '\' character. This is convenient when you want to count records with wc(1) or to grep(1) the output.
EDITED @ 2021.01.06, так как я неправильно понял вопрос ранее.
Попробуйте это:
ip addr show|xargs|sed 's/ \([0-9]*: \)/\n\1/g'
Каждая запись для адаптера начинается с [0-9]*:
, что может быть для вас разделителем:
root@jprst0202:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.7.11.1/24 brd 10.7.11.255 scope global tun0
valid_lft forever preferred_lft forever
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.7.5.1/24 brd 10.7.5.255 scope global tun1
valid_lft forever preferred_lft forever
...
Так:
Результат:
root@jprst0202:~# ip addr show|xargs|sed 's/ \([0-9]*: \)/\n\1/g'
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever
2: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000 link/ipip 0.0.0.0 brd 0.0.0.0
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.7.11.1/24 brd 10.7.11.255 scope global tun0 valid_lft forever preferred_lft forever
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.7.5.1/24 brd 10.7.5.255 scope global tun1 valid_lft forever preferred_lft forever
5: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.7.7.1/24 brd 10.7.7.255 scope global tun2 valid_lft forever preferred_lft forever
...