Как считать IP-адрес назад?

Из того, что я читал, IBM Thinkpad 240 не поддерживает начальную загрузку ни от какого устройства кроме внутреннего жесткого диска или дискеты. Так как дисковод для гибких дисков потерян, и я сомневаюсь, что Вы хотите найти и купить один, Вы застреваете с одной опцией: Удалите жесткий диск и подключите его к другому компьютеру и выполните установку ОС оттуда. Довольно хитрый.

19
27.07.2014, 06:39
14 ответов
[1189206]Вы можете сделать это с помощью [1189632]AWK[1189633]. Есть и более приятные способы сделать это, но, думаю, это самый простой.

Это изменит порядок IP-адресов.

Просто чтобы сохранить несколько нажатий клавиш, как предложил Микель, мы можем еще раз сократить верхнее утверждение:

OR

OR

AWK довольно гибкий. :)[1189217].

29
27.01.2020, 19:44
[1189292] С помощью [1189720]zsh[1189721]:[12157] Это флаги переменного расширения:[12158]s:[1189863]: [1189864]s[1189865]plit на [1189866]. [12159]Oa[1189869]: обратный [1189870]o[1189871]rder [1189872]a[1189873]rray[12160]j:...[1189875]: [1189876]j[1189877]oin на [1189878].[12161]
3
27.01.2020, 19:44
[12125] Таким образом, вы можете ввести адрес и нажать кнопку return для получения результата.[1189233].
1
27.01.2020, 19:44
[1189286] С помощью GNU [1189716] sed[1189717],[12154] меняет любой формат адресов IPv4.[12155] Пример:[12156]
5
27.01.2020, 19:44
[1189220] Если вы хотите использовать только оболочку ([1189634]zsh[1189635], [1189636]ksh93[1189637], [1189638]bash[1189639]), вот другой способ:

Или в обычном старом оболочке:

17
27.01.2020, 19:44
[1189218] Легко с Перлом, таким образом:

12
27.01.2020, 19:44

CPU3 CPU2 CPU1 CPU0  Bin  Hex
---- ---- ---- ----  ---  ---
OFF  OFF  OFF  ON  = 0001 = 1
OFF  OFF  ON   OFF = 0010 = 2
OFF  OFF  ON   ON  = 0011 = 3
OFF  ON   OFF  OFF = 0100 = 4
OFF  ON   OFF  ON  = 0101 = 5 
OFF  ON   ON   OFF = 0110 = 6
OFF  ON   ON   ON  = 0111 = 7
ON   OFF  OFF  OFF = 1000 = 8
ON   OFF  OFF  ON  = 1001 = 9
ON   OFF  ON   OFF = 1010 = A 
ON   OFF  ON   ON  = 1011 = B
ON   ON   OFF  OFF = 1100 = C
ON   ON   OFF  ON  = 1101 = D
ON   ON   ON   OFF = 1110 = E 
ON   ON   ON   ON  = 1111 = F 
Просто для любопытства...[1189653] с помощью [1189654] так[1189655] из GNU coreutils: дана переменная [1189656]ip[1189657] в виде [1189658]192. 168.1.1 [1189659] затем [12123], т.е. [12124]
33
27.01.2020, 19:44

Чтобы завершить его, Ruby:

ruby -r ipaddr -e 'puts IPAddr.new(ARGV.first).reverse' 192.168.1.1

Который также поддерживает IPv6

2607:F8B0:4000:080A:0000:0000:0000:2000
=> 0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.a.0.8.0.0.0.0.4.0.b.8.f.7.0.6.2.ip6.arpa
6
27.01.2020, 19:44

В Python

 a = "192.168.1.122"
 import re
 m = re.search(r'(\d+)\.(\d+)\.(\d+)\.(\d+)',a)
 ip = m.group(4),m.group(3),m.group(2),m.group(1)
 '.'.join(ip) + ".in-addr.arpa"
 '122.1.168.192.in-addr.arpa'
2
27.01.2020, 19:44
IFS=. ; set -- ${0+192.168.1.2}
printf %b. $4 $3 $2 $1 in-addr.arpa\\c

IFS=. ; printf %s\\n \
    in-addr.arpa ${0+192.168.1.2} |    
sed '1!G;$s/\n/./gp;h;d'

IFS=. ; printf '[%b.] ' \
    ${0+192.168.1.2.]PPPPP\\c} |dc
echo in-addr.arpa
2
27.01.2020, 19:44

Использование стандартной библиотеки Python :

>>> ipaddress.ip_address('192.168.1.1').reverse_pointer
'1.1.168.192.in-addr.arpa'
4
27.01.2020, 19:44

Другая возможность - использовать инструмент командной строки "dig" с переключателем "-x".

На самом деле он выполняет запрос к записи PTR, но если вы отфильтруете «PTR», он покажет вам одну прокомментированную строку (запрос) и, возможно, несколько ответов.

Использование «dig» может быть удобно для быстрого написания имени PTR без написания небольшого скрипта. В частности, если вам это нужно в интерактивном режиме (чтобы вырезать и вставить результат). Он также работает с IPv6.

3
27.01.2020, 19:44

С host командой из dnsutils:

$ host -t ptr 192.168.1.1 | cut -d' ' -f 2
1.1.168.192.in-addr.arpa.
1
27.01.2020, 19:44

Если вы хотите, чтобы он работал и с IPv6, вы можете использовать dig -x.

Например:

$ dig -x 194.68.208.240 | egrep '^;.*PTR$' | cut -c 2- | awk '{print $1}'
240.208.68.194.in-addr.arpa.

$ dig -x 2001:db8:dc61:2a61::1 | egrep '^;.*PTR$' | cut -c 2- | awk '{print $1}'
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.6.a.2.1.6.c.d.8.b.d.0.1.0.0.2.ip6.arpa.
2
27.01.2020, 19:44

Теги

Похожие вопросы