Как мне получить доступ к серверу, если у него нет открытых портов?

Чтобы распечатать только IPv4, вы можете извлечь то, что совпадает с опцией -oдля grep.

В качестве более простого примера вы можете сделать:

$ echo "this is a simple test to extract 123.234.34.5 as an IP" | 
       grep -o '[0-9.]*'

123.234.34.5

Но это не будет точно соответствовать одному IPv4.

Для сопоставления IP-адреса с регулярным выражением несколько сложно. Регулярное выражение не понимает числовые диапазоны, только текст. Мы можем сопоставить одно числовое значение 0 -255 с (регулярным выражением, которое игнорирует пробелы и комментарии):

25[012345]                       | # the numers 250 - 255 or
2[01234](?P[0123456789])  | # 200 - 249 or
1(?&digit){2}                    | # 100 - 199 or
#0?                                 # Allow leading zero
[1-9](?&digit)                   | #  10 -  99 or
#0{0,2}                             # Allow leading zeros
(?&digit)                          #   0 - 9

Удалите комментарии к первому столбцу, чтобы включить ведущие нули.

Чтобы избежать повторения [0-9], использовать явные числовые диапазоны (, избегать сопоставления чисел на других языках )и давать имя каждой совпадающей группе, мы можем использовать «Именованные группы захвата» из PCRE :

. ]

(?P                             # Define this as one full byte value.
25[012345]                          | # the numers 250 - 255 or
2[01234](?P[0123456789])     | # 200 - 249 or
1(?&digit){2}                       | # 100 - 199 or
#0?                                    # Allow leading zero
[1-9](?&digit)                      | #  10 -  99 or
#0{0,2}                               # Allow leading zeros
(?&digit)                             #   0 - 9
)                                     # close one full byte definition

Затем нам просто нужно повторить использование определения байта с ведущей точкой (\.(?&byte)){3}еще три раза и некоторыми начальными и конечными маркерами, как показано в этой ссылке

Начальный и конечный маркеры могут быть более простыми «границами слов» (\b), если это то, что необходимо, как показано в этой другой ссылке

В оболочке с регулярным выражением grep PCRE команда может быть записана как:

$ grep -oP '(?xm)(?<=^|[^01234567890.])(?P25[012345]|2[01234](?P[0123456789])|[01]?(?&digit){1,2})(\.(?&byte)){3}(?=[^01234567890.]|$)' <<<"$a"
1.2.3.4
11.22.33.44
123.234.34.5
1.1.192.168
123.234.34.123
123.234.34.123
1.2.3.255
255.255.255.255
1.1.168.192
1.14.2.90
1.2.3.4

Учитывая, что тестовая строка содержит:

$ a='1.2.3.4
11.22.33.44
123.234.34.5
1.1.192.168
text 123.234.34.123 more text
text123.234.34.123more text
1.2.3.255
1.2.3.256
255.255.255.255
256.2.3.4
1123.234.34.123
123.234.34.1235
.123.234.34.123
123.234.34.123.
not 1.1.168.192 in 1.1.168.192.in-addr.arpa.
not 1.14.2.90 in xserver-common_1.14.2.901-2_all.deb
1.2.3.4'

-1
14.11.2021, 15:29
1 ответ

Если у вас нет доступных сетевых служб для подключения к серверу, вы не можете подключиться к нему по сети.

Альтернативные подходы

  • Используйте физическую консоль или, если вы не находитесь локально на машине, попросите кого-нибудь еще войти в физическую консоль. Возможно, системный администратор или кто-то из хостинговой компании, если она размещена.

  • Если сервер является виртуальной машиной, вы можете войти в консоль удаленно, используя IPMI или другую подобную технологию.

1
14.11.2021, 16:54

Теги

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