Привет.Подскажите как из логинов типа MSK_8602 / HABAR_52200 вычеслить ip-адреса сети 10.86.2.0 / 10.52.200.0 с помощью shell-скриптинга.
в моем скрипте вызывается dialog с текстовыми полями, нужно чтобы пользователь вводил только логин, а айпишник сети высчитывался из него автоматом. Второй октет адреса никогда не превышает двух едениц (1 - 99). Спасибо.
А как Вы собираетесь определять, например логин TST_6230
то есть, это может быть и 10.62.30.0 и 10.6.230.0?
или у Вас есть начальные нули для второго октета, то есть второй октет всегда состоит из двух цифр? типа TST_06230
> А как Вы собираетесь определять, например логин TST_6230
> то есть, это может быть и 10.62.30.0 и 10.6.230.0?
> или у Вас есть начальные нули для второго октета, то есть второй
> октет всегда состоит из двух цифр? типа TST_06230Все верно у меня TST_06230
приблизительно накидал на скорую руку, дальше, думаю, разберетесь
#!/bin/bash
mlogin=$1mnum1=`expr index "$mlogin" _`
mnum=${mlogin:$mnum1}mnum2=${mnum:0:2}
mnum2=${mnum2#0}mnum3=${mnum:2}
mnum3=${mnum3#0}network="10".$mnum2.$mnum3."0"
echo $network
запускаете:
./script_name login
на выходе получаете свою сеть.
Спасибо, сразу не заметил :)
>[оверквотинг удален]
> mnum2=${mnum:0:2}
> mnum2=${mnum2#0}
> mnum3=${mnum:2}
> mnum3=${mnum3#0}
> network="10".$mnum2.$mnum3."0"
> echo $network
>
UPD.1.) очистить MSK_8602 от символов отличных от цифр = 8602
2.) поставить "10." перед 8602, после второй цифры просто точку = 10.86.02
3.) удалить нули после точки, добавить .0 в конец = 10.86.2.0Чем? Sed, AWK?
> Чем? Sed, AWK?Все проще, наверху накидал уже для Вас.
Работает! Спасибо Вам
>> Чем? Sed, AWK?
> Все проще, наверху накидал уже для Вас.
> Привет.
> Подскажите как из логинов типа MSK_8602 / HABAR_52200 вычеслить ip-адреса сети 10.86.2.0
> / 10.52.200.0 с помощью shell-скриптинга.
> в моем скрипте вызывается dialog с текстовыми полями, нужно чтобы пользователь вводил
> только логин, а айпишник сети высчитывался из него автоматом. Второй октет
> адреса никогда не превышает двух едениц (1 - 99). Спасибо.