LINUX.ORG.RU

Избранные сообщения DALDON

Хочу email-in-a-box

Форум — Admin

Почему в 2022 году поднять свой мейл сервер так трудно? Неужели нет какого-то специализированного дистрибутива, чтобы поставил его в виртуалку, прокинул порты, создал нужные DNS-записи и всё – email работает? Может, я плохо ищу? Хочу, чтобы можно было привязать разные домены, создать ящики и чтобы был веб-интерфейс (например, roundcube) и всё просто работало. Может плохо ищу?

 , , , ,

CYB3R
()

Энтерпрайз ERP/CRM фо отомейшн оф ё сириоз бизнес

Форум — Talks

ERP-шники из прошлого треда сдулись, а мой интерес к вопросу только разгорелся. Моя попытка нарыть что-то более-менее объемное по теме создает ощущение, что ERP — это как онанизм: все занимаются, но никто не обсуждает. Нашел забавную статью на хабре:

https://habr.com/en/post/447162/ - Не купитесь на ERP

Сразу скажу, что я не согласен с автором, но позиция интересна. Если слегка смягчить ее, то получится что-то такое: если на вашем предприятии бардак, то ERP за вас не сможет его организовать; если же вы навели порядок на своем предприятии, то ERP вам уже особо и не нужна.

В прошлом треде я уже затронул тему того, что далеко не всем и не для всего нужна компьютеризация/автоматизация. То есть, задачей интегратора, прежде всего, должен быть поиск конкретных рутинных процессов и оптимальных путей для их автоматизации.

Подход SAP в этом плане весьма остроумен с коммерческой точки зрения, потому что работы по сверхточному нанесению пользы сам SAP не выполняет, вместо этого клепая вот такие таблички на 240 столбцов:

https://www.sapdatasheet.org/abap/tabl/mara.html

Ну или просто позволяя вам выбрать из готового набора 110 000 (сто десять тысяч) табличек те, которые подойдут вашему бизнесу... или не подойдут. Остроумен с коммерческой точки зрения такой подход потому, что с позиции человека, который не разбирается в IT, то есть, типового клиента SAP, какой-нибудь SAP R/3 предоставляет собой крупную хорошо проработанную и проверенную систему, которая покрывает чуть ли не все на свете варианты бизнес-процессов предприятия. В такие моменты я люблю вспоминать покойного Дейкстру:

“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”

То есть, приходит менеджер, который отвечает за принятие решений, и спрашивает у продажника SAP: «у вас есть ${фичанейм} в системе? Насколько хорошо автоматизирует ${процесснейм} ваше решение?». Причем, говорить об этом до начала внедрения — это все равно, что спрашивать у женщины «вы можете родить мальчика или девочку? А мальчик будет гениальным?». Особенно если этой женщине 50 лет и ее маркетинговое преимущество — это что оба ее сына стали успешными учеными.

К чему это я... На рынке присутствует плохо закрытая ниша простых универсальных решений. Нет никакого смысла скрещивать ежа с ужом и пытаться втюхать гибрида — компьютерные системы для турагенства, сети мясных магазинов, и аптек должны отличаться, и это нормально. Однако, весьма тяжело найти тот самый общий знаменатель, который подошел бы всем и при этом не ограничивал бы никого.

Пока что, из моего опыта разработки CRM/недо-ERP, мне видится, что одно из ключевых препятствий на пути заполнения данной ниши — это реляционные СУБД, которые используется к месту и не к месту — просто потому, что РСУБД есть готовые в большом количестве. Как правило, даже у достаточно конкретного клиента есть ни разу не конкретные требования по автоматизации, которые меняются день ото дня, вроде «мы узнали длину члена Василия Петровича — давайте сохраним эту информацию в CRM записи про Василия Петровича, в надежде, что со временем удастся собрать аналогичные сведения по другим клиентам и вывести кореляции». Происходит это не только из-за сиюминутных прихотей конкретного менеджера, но и из-за постепенной смены коньюктуры и технологий в фирме.

Реляционная же модель приводит к тому, что когда внезапно появляется необходимость сделать связь сущностей N-к-M вместо какой-нибудь 1-к-N, то приходится перекраивать базу верх ногами, создавая новую таблицу связей между сущностями и изменяя алгоритмы создания-чтения-обновления-удаления. А в случае перехода от 1-к-1 в N-к-M нужно создавать уже две дополнительные таблицы. У того же SAP по этому поводу из коробки для целой кучи атрибутов есть поддержка множественных связей, откуда и появилось астрономическое количество табличек — в реальности таблиц корневых сущностей там всего несколько сотен.

Апгрейды, поддержка, доработка — это, между прочим, основной доход вышеупомянутой SAP. Моя воображаемая цель проста: уничтожить SAP с ораклом. По крайней мере, такова она по состоянию на момент создания треда.

Есть много опенсорсных попыток писания ERP софта (например, Odoo, OpenERP, IDempiere/Compiere/Adempiere/Openbravo/metasfresh), но каждая из них, как правило, представляет собой одну и ту же попытку повторить SAP в мелком масштабе. У меня есть некоторые абстрактные зарисовки по этой теме, но, как показывает практика, публиковать их не имеет смысла, а пытаться сделать что-то конкретное прямо сейчас у меня тупо нет времени/желания, поскольку я работаю над релизом предыдущего незаконченного проекта питоньей многозадачности. Так что принимайте эстафету.

 , , ,

byko3y
()

Виртуализация по ГОСТ, КАК?

Форум — Admin

Доброго времени суток.

Вопрос по виртуализации с точки зрения законности в государственных учреждениях.

В организации используем виртуализацию KVM+LXC (Proxmox). Недавно вышел какой то закон, что системы виртуализации должны быть защищены средствами защиты информации.

Нашел статью на хабре. В данной статье в принципе подробно описывается что есть некий ГОСТ описывающий требования к средствам защиты информации систем виртуализации (хотя статья и является жесткой рекламой продуктов компании Cloud4Y).

Из статьи сделали выводы, что система виртуализации должна быть дополнительно защищена средствами защиты информации. Для госудаственных учреждений по идее эти средства должны быть сертифицированы по 152-ФЗ (или что то еще?).

Но подобных сертифицированных средств защиты информации систем виртуализации, в частности для KVM+LXC мы не нашли. Нашли для MS Hyper-V, и для VMware. Что можно использовать для KVM+LXC (в частности для Proxmox)?

Кто еще из госсектора? Что вы используется для закрытия данного вопроса?

Итого вопросы:
- Как правильно трактовать требования к сертифицированным средствам защиты информации для систем виртуализации?
- Что можно использовать для закрытия вопроса по защите информации систем виртуализации?
- Что можно использовать (и возможно ли вообще) для закрытия вопроса по защите информации систем виртуализации KVM+LXC (и в частности для Proxmox)?
- Что вы используется для закрытия данного вопроса?

Заранее спасибо всем ответившим.

 kvm+lxc, , , защита информации

ivanlex
()

QEMU лицензированы для использования Windows 10?

Форум — Talks

Информация об активации Windows 10 привязывается к (motherboard + cpu) и хранится на серверах M$, свежеустановленная Windows 10 проверяет, активировали ли её на таком-то железе.

В QEMU используется одинаковое железо у всех людей по всему миру, — поправьте если я ошибаюсь. Ну пусть кто-то использует -cpu host, ну а кто-то ведь не использует, да? Ну а motherboard в QEMU, должна быть наверняка у всех одинаковая.

В мире семь миллиардов человек, наверняка кто-то же должен был активировать лицензию Windows 10 на одной из дефолтных конфигураций QEMU, и если уникальные ID железа QEMU не генерирует каждый раз заново, то теперь каждый кто использует такую же конфигурацию железа в QEMU, может невозбранно пользоваться лицензионной версией Windows 10, ведь согласно данным своего же сайта, Windows будет думать что запущена на железе, где её и активировали... Не?

Короче, если я сейчас установлю Windows 10 на дефолтную QEMU, она должна быть в теории лицензионной, если кто-то её активировал на такой же дефолтной QEMU. Не?

 ,

Spoofing
()

Свободное Linux ПО для организации видеонаблюдения в бизнес-центре.

Форум — Admin

Никогда прежде этим не занимался. Предстоит организовать видеонаблюдение в коридорах бизнес-центра.

Планирую использовать IP камеры с питанием по PoE, в количестве 40-50 штук.

Ищу свободное ПО под Linux для организации сервера под это дело.

Потребности:

1) Просто запись

2) Запись по движению.

3) Возможность подключиться для просмотра потока или записи через web-интерфейс или программой-клиентом

4) Желательно, но необязательно, просмотр со смартфона.

Непродолжительным гуглежом нашел ZoneMinder, motion и Ivideon.

Прошу помощи в выборе.

Хочу услышать истории успеха, как это сделано у вас.

Спасибо!

 

afanasiy
()

использование btrfs со сжатием

Форум — Admin

Прошёлся по топикам btrfs, пришел к выводу, что вроде бы можно юзать, но с оговорками. Но хочу убедиться в минимальности рисков.

Цель - иметь сжатие и, возможно, raid-1, на одном томе в системе. Дистр fedora. От btrfs хотелось бы, что бы после mkfs.btrfs и настроек в fstab, не нужно было бы беспокоиться ни о чем, сверх обычного (xfs, ext4).

Как оно, нормально будет?

 

zendrz
()

Трудности с пробросом видеокарты в виртуалку

Форум — Admin

Всем привет.

Не работает видеокарта в виртуалке

Железо: Gigabyte GA-EX58-UD3R; Xeon X5660; Radeon HD7770

Хост - Ubuntu Server 18.04.3 LTS; гость - десятка

Что делал:

  1. Включил в биосе vt-d
  2. В etc/default/grub добавил «intel_iommu=on» и «allow_unsafe_interrupts=1» иначе vfio не запускался.
  3. В /etc/modules добавил vfio, vfio_iommu_type1, vfio_pci, vfio_virqfd
  4. В /etc/modprobe.d/vfio.conf добавил:
softdep radeon pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci
options vfio-pci ids=1002:683d,1002:aab0

1002:683d,1002:aab0 - id видеокарты и hdmi звука соответственно

В конфиг виртуальной машины добавил:

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  </source>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x010' function='0x0' multifunction='on'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
  </source>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x010' function='0x1'/>
</hostdev>

Видеокарта видна в системе, но при попытке установки дров система стабильно виснет.

Что можно сделать? Кроме как забить на попытки пробросить видеокарту, конечно)

 , , ,

Aster
()

Есть ли VPN, которые устойчив к потерям пакетов и к развывам соединений

Форум — Admin

Собственно, имеем провайдера, у которого постоянно рвутся TCP сессии. Также наблюдаются потери пакетов, из-за чего нельзя нормально пользоваться интернетом. Есть ли какой нибудь протокол, которые защищает от потерь пакетов и разрывов сессий со стороны провайдера?

 ,

ne-vlezay
()

Сетевой бекап

Форум — Admin

Привествую! Попробовал Clonezilla, оргазма не испытал. Гугл конечно завален инфой, но все пробовать нет времени. Нужен сетевой бекап сервер. Задача такова:

  1. Снимать и сохранять у себя виндовс образы со стороннего сервака с определенной периодичностью. Чтобы в случае краха можно было быстро восстановить работу системы развернув его из бекап образа.

  2. То-же самое но только для пингвина.

  3. Сохранять у себя отдельные папки пользователей. Т.е теневое копирование на бекап сервер с определенной периодичностью.

 

Humaxoid
()

PostgreSQL с резервным инкрементом

Форум — Admin

Всем привет. Изучаю азы резервирования БД. Прошу ваших советов.

Я хочу нас троить резервное копирование с инкрементами. Что я нарыл: Есть в коробке с postgres утилита pg_basebackup. и WAL файлы транзакций.

В настройках постгреса надо прописать

wal_level = replica

archive_mode = on Перезагрузить постгрес. Сделать бэкап с WAL файлами, командой

pg_basebackup -U postgres -D /tmp/pg_backup -Ft -z -Xf -P

Вопрос в следующем: Как снимать инкременты? ведь команда pg_basebackup сделает базовый бэкап!

Еще в документации прочитал, что можно это дело распараллелить, если знаете - подскажите, пожалуйста! И еще.. есть файлы WAL в папке кластера БД. Они будут до и после pg_basebackup? Как их определить после команды pg_basebackup? Что непонятно - спрашивайте! Дам дополнительную информацию! Спасибо. Postgres 9.6

 

WeSTMan
()

SPAM из несуществующих ящиков ./zimbra

Форум — Admin

(zimbra 8.8.11) Всем привет, вообщем дело такое. Случайно обратил внимание на спулер, и увидил там более 3к писем в отложенных.С моего домена, с не существующих адресов куда-то там в даль… SMTP сервер работает только по авторизации, проверял релей, закрыт. Очередь растёт стабильно по письма 2 в минуту :/ IP адреса источников почти все разные но, домен мой. Определённо спам. Но что делать хз. Подскажите пожалуйста, куда копать.

 ,

localjero
()

Мониторинг и балансировка каналов

Форум — Admin

Нужно мониторить несколько каналов (провайдеров) и настраивать балансировку и маршруты в зависимости от доступности каналов. Если все каналы недоступны, то нужно поднимать резервный 3G канал. Естественно нужно оправлять на почту админу уведомления о проблемах.

Сейчас используется самодельный «костыль», но он делает не все что нужно. Есть ли что-то стандартное (свободное) для решения этих задач, или дальше «пилить» свой костыль :)

 ,

Ushenin
()

IPsec, strongswan, клиент дублирует пакеты в обход туннеля.

Форум — Admin

Схема такая. Есть виртуалка есть хост, между ними виртуальный адаптер, адреса соответственно 192.168.57.2 -виртуалка, 192.168.57.1-хост.

Пытаюсь осовоить IPsec, ковыряюсь со strongswan.

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

Вот так это выглядит в wireshark

с виртуалки на хост

с хоста на виртуалку

ping с виртуалки на хост:

 ping -I enp0s9 192.168.57.1 -c 2
PING 192.168.57.1 (192.168.57.1) from 192.168.57.2 enp0s9: 56(84) bytes of data.
64 bytes from 192.168.57.1: icmp_seq=1 ttl=64 time=0.241 ms
64 bytes from 192.168.57.1: icmp_seq=2 ttl=64 time=0.294 ms

--- 192.168.57.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1013ms
rtt min/avg/max/mdev = 0.241/0.267/0.294/0.031 

ping c хоста на виртуалку:

 ping 192.168.57.2 -c 2
PING 192.168.57.2 (192.168.57.2) 56(84) bytes of data.
64 bytes from 192.168.57.2: icmp_seq=1 ttl=64 time=0.451 ms
64 bytes from 192.168.57.2: icmp_seq=2 ttl=64 time=0.359 ms

--- 192.168.57.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1019ms
rtt min/avg/max/mdev = 0.359/0.405/0.451/0.046 ms

Конфигурация swanctl на хосте:

cat swanctl.conf 
#ike_v1_psk_connection_cld simple test configuration for ipsec client/server
# main configuration section
connections {
	ike-v1-psk-connection {
		version = 1
		remote_addrs = 192.168.57.2,0.0.0.0/0
		local-1 {
			auth = psk
			id = "server"
		}
		remote-1 {
			auth = psk
		}

		children {
			ike-server {
				local_ts = 192.168.57.0/24
				remote_ts = 192.168.57.0/24
				mode = tunnel
				# defalt start_action is none, that's more \
				# suitable for server
			}
		}
	}
}

# secrets section
secrets {
	ike_pks_mari {
		id-0 = "server"
		id-2 = "mari-el"
		secret = "super_pass"
	}
	ike_psk_server {
		id = "server1"
		secret = "secrete ingredient"
	}
}

Конфигурация swanctl на виртуалке:

 cat swanctl.conf 
# client ipsec configuration 
# main configuration section

connections {
	ike-v1-client-conf {
		version = 1
		remote_addrs = 192.168.57.1		# remote address for server
		
		local-1 {
			auth = psk
			id = "mari-el"
		}
		remote-1 {
			auth = psk
		}
		
		children {
			ike-1{
				remote_ts = 192.168.57.0/24	// all trafic for server side
				mode = tunnel
				start_action = start
			}
		}
	}

}

#secrets section
secrets {
	ike-1 {
		id-1 = "mari-el"
		secret = "super_pass"
	}
}

В обоих случаях используется strongswan 5.8.1 собранный из исходников по инструкции с гитхаба.

 ,

Notevill
()

Если закончились порты?

Форум — Admin
# dig -t A google.com
google.com.		299	IN	A	173.194.222.113
google.com.		299	IN	A	173.194.222.101
google.com.		299	IN	A	173.194.222.100
google.com.		299	IN	A	173.194.222.138
google.com.		299	IN	A	173.194.222.139
google.com.		299	IN	A	173.194.222.102

когда клиент создаёт TCP/IP-соединение, он же ведь занимает порт, так?

# ss -an
State		Recv-Q	Send-Q	Local Address:Port	Peer Address:Port
ESTAB		0	0	78.24.219.239:80	spoofing:59144

диапазон портов, надо полагать

# sysctl -a
net.ipv4.ip_local_port_range = 32768	60999

но ведь 6 * (60999 - 32768) = 169386 это мало? не? для всего мира?

или существует какое-то иное решение проблемы? я просто хочу расширить домашний Wi-Fi... что сделать? больше шлюзов добавить? ну ладно, порты закончатся на 192.168.1.1, будут порты браться для 192.168.1.2... а провайдер? он же выдаёт мне только один IP-адрес? приехали?

 

Spoofing
()

Оптимальный способ поднять энное количество однотипных виртуальных машин

Форум — Admin

Есть виртуальная машина ВМ0 (vbox) со статическим адресом. В скрипте Ansible выполняется следующее:

  1. ВМ0 клонируется как ВМ1 (ВМ0 выключена)
  2. Запускаем ВМ1
  3. Заходим на ВМ1 на нее по этому адресу
  4. Настраиваем ВМ1 плюс меняем адрес на заранее определенный
  5. Перегружаем ВМ1
  6. Переходим к п.1 и клонируем уже ВМ2, ВМ3 ... ВМn

Хочется одновременно запустить все n ВМ и одновременно их настраивать, т.к. это быстрее в n раз.

Идеальным вариантом было бы еще при клонировании ВМ задавать ей hostname (да и адрес иногда полезно), но я этого не нашел как сделать. Можно задавать mac адрес при клонировании и по нему привязать адреса на dhcp сервере, но мне не нравится что нужно будет лезть в его настройки, хотелось бы ограничиться настройкой только ВМ

 ,

yetanother
()

Qemu - рассинхронизация времени с хостом

Форум — Admin

Наблюдаю сильную рассиинхронизацию времени внутри kvm (qemu) с хостом.

qemu запускается так:

qemu-system-x86_64 -net bridge,br=brqemu -net nic,model=virtio,macaddr=xx:xx:xx:00:00:03 -enable-kvm \
 -drive file=/dev/storage/kvm-root,if=virtio \
 -drive file=/dev/storage/kvm-home,if=virtio -m 4096 -vnc 127.0.0.1:0 -kernel bzImage -append root=/dev/vda

Т.е. ничего про rtc нету, в надежде на дефолты. Был -smp 6, потом убрал, не помогло (кому-то в гугле помогало, я надеялся на то же).

Версия qemu - 3.1.0, до этого была 2.3.0, с тем же эффектом.

Рассинхрон идёт сразу после старта и очень быстрыми темпами, из-за которых, похоже, ntpd не справляется и отказывается синхронизировать часы.

Скорость рассинхрона - 1 миллисекунда за секунду, что как-то дохера, по-моему. Т.е. буквально запускаешь ntpdate -q pool.ntp.org и на каждом запуске видишь, как уплывает время в даль.

Ещё данные:

# ntpq -c rv
associd=0 status=c018 leap_alarm, sync_unspec, 1 event, no_sys_peer,
version="ntpd 4.2.8p13@1.3847-o Mon Sep 16 09:36:00 UTC 2019 (1)",
processor="x86_64", system="Linux/3.18.12-gentoo", leap=11, stratum=16,
precision=-10, rootdelay=0.000, rootdisp=47.745, refid=STEP,
reftime=(no time),
clock=e12b1e52.0e2f50b6  Tue, Sep 17 2019 10:56:50.055, peer=0, tc=6,
mintc=3, offset=0.000000, frequency=56.721, sys_jitter=0.976562,
clk_jitter=0.977, clk_wander=0.000

При старте ntpd в логах ошибка:

Sep 17 10:58:15 qemu-03 ntpd[9231]: kernel reports TIME_ERROR: 0x6041: Clock Unsynchronized
Sep 17 10:58:15 qemu-03 ntpd[9231]: kernel reports TIME_ERROR: 0x6041: Clock Unsynchronized

Какое-то время ntpd пытается синхронизировать часы (бывает stratum 3), но потом уходит в stratum 16 и всё.

(ntpd запущен пару минут назад):

# ntpq -c pe 

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 stratum2-2.NTP. 129.70.130.71    2 u    6   64    3   15.934  1019.81 788.720
 stratum2-4.NTP. 129.70.130.70    2 u    5   64    3   14.933  1042.84 811.482
 sv1.ggsrv.de    205.46.178.169   2 u    3   64    3    0.977  1099.32 855.223
 server1.sim720. 193.190.230.65   2 u    4   64    3    0.977  1089.37 835.586

Куда вообще копать и что с этим можно сделать? Тупо обновляться до последних версий ядра и qemu в надежде на фикс не хочется, хотелось бы знать причину.

Ядро на хосте: 3.18.11

Ядро на kvm: 3.18.12

 ,

AngryElf
()

BTRFS, может кому пригодится для восстановления

Форум — Admin

Debian 10. Раздел с btrfs 3.6Tb для данных пользователей.
После перезагрузки вдруг перестал монтироваться, опции монтирования recovery,ro не помогали.
SMART пишет GOOD, но Victoria показывает 198-Offline_Uncorrectable красным.

btrfs check /dev/sda4 завершалась аварийно
btrfs rescue zero-log /dev/sda4 выполнился, но раздел не смонтировался

Помогло следующее: из ветки testing установил btrfs.progs версии 5
btrfs check /dev/sda4 стал нормально сыпать ошибками
btrfs check --repair /dev/sda4 стал ремонтировать. Ждать не стал, прервал ремонт. Раздел смонтировался в ro и удалось все переписать.
Ради эксперимента запустил снова btrfs check --repair /dev/sda4 , ремонт продолжился, прождал три дня, окончания не дождался, прервал. Раздел переформатировал в btrfs.

Мои ошибки: Оказалось, что metadata и system были single. В UPS батарея тест проходила, но не держала.

PS. Есть ли возможность подключить второй диск к разделу btrfs и настроить так, чтобы metadata и system были raid1, data=single и при этом все данные писались бы исключительно на первый диск, не залезая на второй,
т.е. второй диск только для raid1 для metadata и system, а все данные только на первом диске?

 , ,

Valdim777
()

Суммирование на линукс

Форум — Job

Ребят, кто может помочь сделать на линукс что-то подобии такого https://speedify.com/ Есть мини ПК на линукс с 2 (может быть более 2) модемами, которые подключены к ПК через хаб. Нужно сделать так, чтоб ПК раздавал трафик совместно со всех модемов (типа Channel bonding).Вот подробнее https://docs.google.com/document/d/1BYW32Gk7mXyqnMJF_4aBgovfE3KB85APlhYEYqgqF...

 

luchi
()

Второй vpn пускается через первый и от этого тормозит. Как пофиксить?

Форум — Admin

Я по умолчанию всегда держу openvpn соединение включенным, используя его как default gateway, так как живу в тоталитарной стране с цензурой интернета. Иногда мне надо подключать openconnect vpn для доступа к компьютерному кластеру. Если я делаю это при включенном openvpn соединении, соединение с кластером тормозит. Я предполагаю, что трафик опенконнекта идет через тот самый default gateway. Как пофиксить? Бонусные очки за решение, использующее GUI нетворкменеджера.

 ,

hlebushek
()

Мониторинг доступности интернета на bash

Форум — Admin

Всем привет!

В академических целях занимаюсь велосипедостроением, поэтому не ищите много смысла в этом скрипте.

Нашел скрипт, который логирует недоступность заданного хоста и пишет об этом в лог. У меня есть gsm-шлюз, и я подключил отправку себе смс при падении интернета.

Выглядит все это вот так:

#!/bin/bash
PHONES="999999999"                                            
HTTP=http://192.168.1.221:9090/sendsms                          #адрес на шлюзе для запроса
USER=user                                                       #пользователь для авторизации на шлюзе
PASS=password
hostname=$(/bin/hostname -f)
send_bad_msg ()
{
for PHONE in $PHONES
do
curl -s -X POST -d "username=$USER&password=$PASS&phonenumber=$PHONE&message=$hostname Internet link is DOWN" $HTTP? > /dev/null
done
}
send_good_msg ()
{
for PHONE in $PHONES
do
curl -s -X POST -d "username=$USER&password=$PASS&phonenumber=$PHONE&message=$hostname Connection to Internet restored" $HTTP? > /dev/null
done
}
# Скрипт в бесконечном цикле пингует удалённый хост в инете с интервалом 60 сек
# при первой удачной или неудачной попытке пинга пишется соответствующее сообщение в лог
# следующая запись в лог делается только при изменении состояния связи
# инициализация переменной результата, по умолчанию считается, что связь уже есть
result=connected
# смена текущего каталога перед записью лога
cd /var/log
echo `date +%Y.%m.%d__%H:%M:%S`' Run script ' >> ping.log
# бесконечный цикл
while [ true ]; do
    # пинг хоста с последующей проверкой на ошибки
    errorscount="$(ping -c 2 -W 4 192.168.1.24 2<&1| grep -icE 'unknown|expired|unreachable|time out|100% packet loss')"
    # если предыдущий пинг был удачен, а текущий нет, т.е. вывод ping содержит ошибки, то
    if [ "$result" = connected -a "$errorscount" != 0 ]; then
    # запоминаем результат текущего пинга    # запоминаем результат текущего пинга
    result=disconnected
    # и пишем в лог время разрыва соединения
    echo `date +%Y.%m.%d__%H:%M:%S`' * connection break' >> ping.log 
	sleep 30
	if [ "$errorscount" != 0 ]; then 
		send_bad_msg
	fi
    fi
    # если предыдущий пинг был неудачен, а текущий успешен, то
    if [ "$result" = disconnected -a "$errorscount" = 0 ]; then
    # запоминаем результат текущего пинга
    result=connected
    # и пишем в лог время установки соединения
    echo `date +%Y.%m.%d__%H:%M:%S`' connection restore' >> ping.log && send_good_msg
    fi
	sleep 10
done

Иногда (чаще всего в 05:06 утра) Интернет отключается на 30 секунд, приходит смс, все как положено. Однако 30 секунд в 5 утра - это не критичное событие, и я хотел отложить отправку смс, если пинга нет менее 30 секунд.

Как понимаю, есть два пути решения - или увеличить кол-во пингов, необходимых для проверки соединения, либо ввести какой-то счетчик, который будет считать количество состояний для $errorscount, и отталкиваясь от счетчика, отправлять смс.

Однако сейчас я поставил просто таймаут.

    echo `date +%Y.%m.%d__%H:%M:%S`' * connection break' >> ping.log 
	sleep 30
	if [ "$errorscount" != 0 ]; then 
		send_bad_msg
	fi
    fi

Прошу подсказать, насколько это корректное решение, относительно решения текущего вопроса?

Странно, сделал code=Bash /code, а подсветки не появилось

 ,

Aborigen1020
()