How to delete leases from dhcpd.conf?
I would like to delete leases from dhcpd.conf where I give the ip address to be deleted from a Bash variable. A dhcpd.conf example is at the button. However I can’t even get it to print a lease I want to delete
ip="192.168.234.5"; perl -0777snle 'print if /lease $ip \<.*?\>/' -- -ip=$ip dhcpd.leases
lease 192.168.234.5 < starts 3 2018/11/21 18:53:11; ends 3 2018/11/21 18:54:11; tstp 3 2018/11/21 18:54:11; cltt 3 2018/11/21 18:53:11; binding state free; hardware ethernet 14:99:e2:04:52:5c; uid "\001\024\231\342\004R\\"; >lease 192.168.234.2 < starts 3 2018/11/21 20:42:48; ends 3 2018/11/21 20:52:48; tstp 3 2018/11/21 20:52:48; cltt 3 2018/11/21 20:42:48; binding state free; hardware ethernet 00:21:5e:90:13:fb; set MacAddress = "00:21:5E:90:13:FB"; set output = "192.168.234.2,00:21:5E:90:13:FB,(host-decl-name n/a),5E9013FB,(dhcp-client-identifier n/a),(vendor-class-identifier n/a),(agent.remote n/a),(agent.circuit n/a)"; >lease 192.168.234.13 < starts 3 2018/11/21 21:38:16; ends 3 2018/11/21 21:38:27; tstp 3 2018/11/21 21:38:27; cltt 3 2018/11/21 21:38:16; binding state free; hardware ethernet 00:e0:6f:11:7f:59; uid "\001\000\340o\021\177Y"; >
This might be interesting for you: The dhcp server supports a management protocol call omapi. If enabled, you can manage certain types of objects (like leases) while the dhcp server is running. There is a command line client called omshell which can be used.
6 Answers 6
# perl -lnse '$f = 0 if /^lease/; $f = 1 if /^lease $ip [ lease 192.168.234.13 < starts 3 2018/11/21 21:38:16; ends 3 2018/11/21 21:38:27; tstp 3 2018/11/21 21:38:27; cltt 3 2018/11/21 21:38:16; binding state free; hardware ethernet 00:e0:6f:11:7f:59; uid "\001\000\340o\021\177Y"; >
see perlre doc: (?!pattern) — A zero-width negative lookahead assertion. For example /foo(?!bar)/ matches any occurrence of foo that isn’t followed by bar .
Can anyone see what I am doing wrong?
Firstly, you’re reading in the whole file in one go (with -0777 ), which means you lose the ability to easily print a single stanza from your file. Better to use -0175 which is octal for «>». That way, your code is executed once for each stanza in the input file.
But it still doesn’t work. That’s because of your regex — /lease $ip \<.*?\>/ . That dot, by default, matches any character except a newline. And as your » characters are always on different lines, that is never going to match.
You could add /s to the end of the match operator to change the meaning of . to match a newline as well. But I think it’s easier to just truncate the regex to only match what’s important to you — /lease $ip \
So, finally, we end up with this:
$ ip="192.168.234.5"; perl -0175snle 'print if /^lease $ip \' -- -ip=$ip dhcpd.leases lease 192.168.234.5 < starts 3 2018/11/21 18:53:11; ends 3 2018/11/21 18:54:11; tstp 3 2018/11/21 18:54:11; cltt 3 2018/11/21 18:53:11; binding state free; hardware ethernet 14:99:e2:04:52:5c; uid "\001\024\231\342\004R\\"; >
ОС Windows очень бережно работает с сетью. Настолько бережно, что устаревшие данные об узлах могут храниться в кэше годами.
Симптомы устаревших данных могут быть самыми разнообразными:
- пинг по имени идёт на один адрес, а попытка подключения к терминалу или ресурсу по тому же имени — на другой;
- при физической смене шлюза (одно устройство сменяется на другое, но с таким же IP-адресом) — пропадает интернет;
- появляются конфликты IP-адресов в локальной сети, о чём сигнализирует баллон над часами;
- перестают работать удалённые принтеры
- и ещё масса других удовольствий
Почему такое происходит? Потому что сетевых кэшей несколько, а данные в них перестают соответствать не только реальному положению дел в сети, но и друг другу.
Излечить можно по вполне стандартной процедуре.
0. Разрываем подключение к локальной сети
Работающая сеть может помешать корректно очистить все существующие кэши.
1. Очищаем кэш ARP
В локальной сети компьютеры общаются между собой не по IP, а по MAC-адресам, то есть на более низком (канальном) уровне.
При обращении к удалённому компьютеру по IP, первым делом идёт широковещательный запрос на получение его физического адреса. Полученный адрес падает в кэш ARP, для ускорения последующих обращений. И только потом идёт подключение к удалённой машине, но уже не по IP, а по MAC-адресу.
В нормальном режиме запись кэша ARP хранится в течении двух минут с момента последнего обращения, но не более 10 минут.
2. Очищаем кэш NetBIOS
В этом кэше находятся сопоставления NetBIOS-имён компьютеров с их IP-адресами. Если вам посчастливилось и в сети присутствует ещё и сервер WINS (что-то типа DNS для NetBIOS имён), есть смысл почистить и его.
Сразу после очистки этого кэша туда подгружаются записи из файла LMHOSTS ( %SystemRoot%\System32\drivers\etc\lmhosts ).
Многие считают протокол NetBIOS устаревшим, однако микрософт носится с ним как с писаной торбой. Без него Windows ведёт себя в сети неадекватно. В то же время, с ним — создаёт дикий широковещательный флуд по портам 137 и 138.
Вирус kido одобряет использование NetBIOS.
3. Очищаем кэш DNS
Здесь всё понятно. Кэш DNS — это сопоставление сетевых имён узлов с их IP-адресами.
В него же подгружаются записи из файла HOSTS ( %SystemRoot%\System32\drivers\etc\hosts )
Кстати, вирусы очень любят менять местоположение файла HOSTS.
А путь к нему задаётся в реестре, ветка HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters , ключ DataBasePath , тип REG_EXPAND_SZ .
Если команда возвращает ошибку — надо запустить (или перезапустить) службу DNS-клиента.
4. Восстанавливаем подключение к локальной сети
5. Обновляем сетевые настройки по DHCP
Команда посылает запрос последнему использовавшемуся серверу DHCP (адрес этого сервера берётся из реестра) на получение сетевых настроек.
Все описанные процедуры можно сделать толпой и из графики.
В ХР: Пуск → Панель управления → Сетевые подключения.
На нужном подключении нажимаем правую кнопку мыши и выбираем из меню «Восстановить». После этого будут выполнены следующие операции:
- Широковещательный DHCP-запрос. Ответы приходят со всех DHCP-серверов.
- Очистка кэша ARP
- Очистка кэша NetBIOS. С последующей загрузкой файла LMHOSTS.
- Очистка кэша DNS. С последующей загрузкой файла HOSTS.
- Попытка регистрации в WINS (актуально только если он есть)
- Попытка регистрации в DNS (актуально только для AD)
К сожалению, этот лёгкий метод работает криво и не всегда.
Комментарии
nsi223
да это ваще косяк.
как вариант ещ можно добваить net use * /delete
и то не всегда корректно чистить сетевые подключения
как вариант ещ можно добваить net use * /delete
и то не всегда корректно чистить сетевые подключения
Эта команда не работает )
Подробнее про то, как почистить подключения — здесь.
Илья
Беспроводное соединение WI-FI отключать необходимо.
Беспроводное соединение WI-FI отключать необходимо.
Вай-Фай это всего лишь сетевой интерфейс, который в данном случае ничем не отличается от проводного.
Чтобы выполнить необязательный пункт 0 — достаточно отключиться от точки доступа.
Виолетта
Спасибо,ребят! выручили! перепробовала всякие советы. что-то точно помогло))))
ХрумычЪ
От куда, что запускать?! Ничего не понятно :С
От куда, что запускать?! Ничего не понятно :С
Командная строка, cmd.exe. Белые буковки на чёрном фоне. И команды с клавиатуры буковками вводить.
Линуксоид
ОС Windows очень бережно работает с сетью. Настолько бережно, что устаревшие данные об узлах могут храниться в кэше годами. Мда уж.
Столкнулся с проблемой. Из линукса расшарены папки через самбу и прописано 2 юзера с разными правами доступа. Из винды (7) доступ по сети идет к папкам после ввода пароля первого юзера, все работает как часы, однако в текущем сеансе работы не удается сменить первого юзера на второго, то есть нет такой функции в семерочке, чтобы сбросить подключение и переавторизоваться под другим юзером в сети. Всякие танцы с бубном не помогают, ни сброс соединения на физическом уровне, ни ввод команд в консоль винды, только жесткий ребут системы, вот тогда и появляется снова окно ввода пароля в сетевом окружении.
Мда, насрать на руки разрабам надо этой винды, и кто то ее еще хвалит за надежность и безглючность, а типичные сетевые задачи реализованы из рук вон как плохо в ней.
Значит надо писать свой скрипт, который будет очищать все кэши соединений и паролей без ребута.
Столкнулся с проблемой. Из линукса расшарены папки через самбу и прописано 2 юзера с разными правами доступа. Из винды (7) доступ по сети идет к папкам после ввода пароля первого юзера, все работает как часы, однако в текущем сеансе работы не удается сменить первого юзера на второго, то есть нет такой функции в семерочке, чтобы сбросить подключение и переавторизоваться под другим юзером в сети. Всякие танцы с бубном не помогают, ни сброс соединения на физическом уровне, ни ввод команд в консоль винды, только жесткий ребут системы, вот тогда и появляется снова окно ввода пароля в сетевом окружении.
Мда, насрать на руки разрабам надо этой винды, и кто то ее еще хвалит за надежность и безглючность, а типичные сетевые задачи реализованы из рук вон как плохо в ней.
Например, в семёрке сеть жостко завязана на «брандмауэр». Т.е. в ХР микрософтовский сетевой фильтр был отдельной службой, а в 7 они принудительно пустили через него все пакеты. Отключаешь службу — пропадает сеть. Я когда это увидел — не знал, смеяться или плакать.
Значит надо писать свой скрипт, который будет очищать все кэши соединений и паролей без ребута.
Или, как подсказали в комментах по ссылке выше, «control userpasswords2».
Этот диалог из обычных менюшек недоступен.
А в сетевых кэшах пароля от самбы нет, их сброс не поможет.
Сергей
Интересно, а в чём отличие от netsh winsock reset ?
Fil2005
Столкнулся с забавной ситуацией: переставил местами диски у 2 одинаковых моноблоков, только один с win 7, другой с win 10.
Получил два компа с одинаковым Mac-адресом. Соответственно и IP они получают синхронно один и тот же. И никакого конфликта 🙂 Проверили по инвентарке — неправильный mac у win 10. Лечится последовательным отключением сетевой в BIOS, загрузкой винды без сетевой, включением сетевой в BIOS обратно.
Александр
Столкнулся со следующей ситуацией: после резервирования ip-адреса для компьютера с Win XP SP3 на роутере TL WR841N, на самом компе началось постоянное прерывание сетевого соединение, модем не пингуется, интернет недоступен. Помогает только «Исправление» в сетевом подключении, потом через несколько минут (5-10) снова разрыв и т.д.
На модеме убиралось резервирование адреса, в сетевой карте как прописывался ip так и назначался автоматом — ничего не помогает. Что еще замечено, ip-адрес сетевой карте все вреся назначается один и тот же, независимо или вручную прописан или выбрано авто назначение. В сетевом окружении компьютер виден только если указать его ip-адрес, по DNS имени не находит.
Разбор любой неведомой херни в сети начинается с поиска конфликтующих mac- и ip-адресов.
Но в данном конкретном случае скорее всего у виндов просто потекли мозги.
Михаил
Собственно спасибо всем кто помогает разобраться в дерьме мелкомягких. Проблемы у меня начались, с покупки китайского девайса WI-FI
который все время отваливался. и что меня просто убивало, винда не оставляла ни каких записей, по этому поводу, отрубился, и тишина. Номера сетевых адаптеров дошли до 20 номеров, и только после этого, винда предупредила, что адрес . 173.1. был дан другому, отсутствующему адаптеру. Единственно что я делал, это чистил Диспетчер устройств, удаляя дубликаты адаптеров #2,#N.
Буду дальше смотреть, пока не добьюсь чтобы дубликатов, не было, а номера начинались с единицы.
Сергей
В моем случае была проблема с доступом к одной из сетевых папок. помогло только удаление клиента для сетей microsoft и службы доступа к файлам и принтерам сетей microsoft в свойствах сетевого подключения, с последующей повторной установкой и перезагрузкой.
В моем случае была проблема с доступом к одной из сетевых папок. помогло только удаление клиента для сетей microsoft и службы доступа к файлам и принтерам сетей microsoft в свойствах сетевого подключения, с последующей повторной установкой и перезагрузкой.
Вообще жесть.
С такими симптомами лучше систему переустановить.
imen
Кэш майкросовта — Вещь в себе.
Сохраняет даже то, что по логике работы системы сохраняться не должно.
Речь о типо «сертифицированной» криптографии на 2008-м сервере.
Serg
Может кто подскажет — в домене под одним именем пингуется другая машина, и пишет неверный ip. Пингуя по имени ту машину, айпи которой отображается у другой машины получаем верный адрес.
Что надо почистить, что бы имена соответствовали адресам??
imen
Может кто подскажет — в домене под одним именем пингуется другая машина, и пишет неверный ip. Пингуя по имени ту машину, айпи которой отображается у другой машины получаем верный адрес.
Что надо почистить, что бы имена соответствовали адресам??
Вангую, что имеется в виду «домен» майкросовта, про который никто не может внятно сказать: что это такое?
И в данном вопросе мы наблюдаем эмпирическое обоснование Священного Предания, согласно которому использование встроенного DNS-сервера категорически НЕ рекомендуется.
Олег
Может повторюсь. За ранее извиняюсь.
Проблема. При попытке задать сет. интерфесу стат. Ip пишет занято. Подощреваб, что действительно занято, но интерфейсом который уже отсутствует в системе.
Что делал.
Чистил кеш dns, убрал все стататические адреса в моршрутизаторе, удалил miniport #2,#3. ( Конкретно сетевого интерфейса с таким номером небыло),удалял драйвера на имеющиеся интерфейсы. Не помогло.
Есть мысль почистить реестр сетевых интерфейсов. В какой ветки(ах) смотреть?
Или есть вариант проще или ещё идеи.
Если вы видите эту надпись,
значит, новый движок уже в работе
и страница отображается с помощью него.
Обратная связь
по электропочте info©it-simple.ru
или через нанокомментсы.
Техническая информация
Время подготовки страницы: 0.001142 c.
Кэш: частичный.