В зависимости от Вашего дистрибутива можно добавить сценарии для выполнения автоматически на начальной загрузке. Если бы Вы используете initscripts, они были бы добавлены к rc.local (/etc/rc.local IIRC), и с systemd я полагаю, что Вы сделали бы сервисный файл для них и затем включили бы его так, он работал на начальной загрузке.
С debian это был бы initscripts и таким образом rc.local
.
Монтирование должно быть, покончили /etc/fstab
который будет работать на начальной загрузке.
python
regexp использует синтаксис расширенного регулярного выражения, который прибывает из egrep
команда в 70-х (хотя {...}
часть была добавлена позже, и на самом деле в grep
прежде egrep
).
POSIX консолидировал grep
и egrep
команды (egrep
теперь grep -E
) в 90-х и стандартизированный {x,y}
оператор (который не был доступен в ранее egrep
s).
Таким образом, теперь необходимо смочь использовать grep -E 'that-regexp'
со всеми современными grep
реализации.
Обратите внимание, что Ваш regexp позволил бы 299.299.299.299 и {1}
s избыточны. {0,1}
может быть сокращен к ?
.
Отметьте это grep
найдите строки, которые соответствуют regexp, который является строками, которые содержат строку, которые соответствуют regexp где угодно. Использовать ^
и $
к привязке или использованию -x
опция к grep
.
Попробованный для сокращения regexp вот результат:
#!/bin/bash
rx='([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
for ip in 08.08.08.08 3.3.3.3 11.11.11.11 \
111.123.11.99 \
222.2.3.4 999.88.9.9 \
255.255.255.255 255.0.3.3 0.256.0.222; do
if [[ $ip =~ ^$rx\.$rx\.$rx\.$rx$ ]]; then
echo "valid: "$ip
else
echo "not valid: "$ip
fi
done
08
не допустимое восьмеричное. В Firefox, например, если Вы входите http://010.010.010.010
, Вы запрашиваете 8.8.8.8, и если Вы запрашиваете http://08.08.08.08
, Firefox пытается разрешить его как имя хоста, поскольку это не допустимый IP-адрес.
– Stéphane Chazelas
31.01.2014, 15:03
gethostbyname
и getaddrinfo
обычно поддерживайте то же как inet_addr
. Затем у Вас может быть все промежуточное. При проверке исправности входа я думаю, что последнее решение является самым безопасным. 010.010.010.010
допустимо для большинства инструментов, но не обязательно имейте в виду то же для всех, таким образом, лучше отклонить его.
– Stéphane Chazelas
31.01.2014, 15:25
можно интегрировать эту функцию с кодом для проверки IP-адреса. Если можно совместно использовать текущий код, я могу быть более характерен для проблемы.
function validateIP()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
echo "Enter IP Address"
read ip
validateIP $ip
if [[ $? -ne 0 ]];then
echo "Invalid IP Address ($ip)"
else
echo "$ip is a Perfect IP Address"
fi
127.1
допустимый IP-адрес.
– Chris Down
31.01.2014, 14:27
0111.0111.0111.0111
или 08.08.08.08
(что один со значением, слишком большим для основной ошибки)
– Stéphane Chazelas
31.01.2014, 14:49
08.08.08.08
допустимо или нет, и 010.010.010.010
средства 8.8.8.8
(наиболее распространенный) или 10.10.10.10
– Stéphane Chazelas
31.01.2014, 14:57
08.08.08.08
рассматривается как Octal value
сервером, потому что 0, определяет Восьмеричное число, таким образом, сервер игнорирует то значение.
– 124
31.01.2014, 15:04
Я думаю, что это должно покрыть его
$ octet="(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])"
Или избегать нулей слева:
$ octet="(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"
Можно затем использовать $octet
:
$ ip4="^$octet\\.$octet\\.$octet\\.$octet$"
$ echo $ip4
^(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$
$ [[ 123.234.12.34 =~ $ip4 ]] && echo y || echo n
y
$ [[ 123.234.12.345 =~ $ip4 ]] && echo y || echo n
n
?
квантор. Ваш regex не может соответствовать допустимому IP-адресу 127.001.001.001
– glenn jackman
23.02.2015, 03:02