Сторожевой пес Интернета

#!/bin/sh

#
# Watchdog: keep the Internet up and running.
#
# Phil Chadwick.  2015-11-18.
#
# $Revision: 1.15 $

# For use in root's crontab like this:
# */10 * * * * /etc/firewall/internet_watchdog

PATH="/bin:/usr/bin:/sbin:/usr/sbin"
export PATH

INTERNET_NIC=tun0	# The Internet link interface (e.g. ppp0)
MINUPSECS=1800		# Don't reboot unless uptime > MINUPSECS
REDIALWAIT=240		# Allow this many seconds to re-make the connection
SHUTMESSAGE="Rebooting to restart Internet"

# Ping targets (несвязанный список общедоступных хостов, которые отвечают на ping)
PT1=192.231.203.132	# resolv.internode.on.net
PT2=195.122.30.54	# google.com.au
PT3=104.25.239.31	# www.ozspeedtest.com
PT4=204.79.197.219	# bing.com.au
PING_TARGETS="$PT1 $PT2 $PT3 $PT4"

# Syslog configuration
LOGTAG=$(basename $0)
LOGPRI='local0.notice'

# See if we can ping anything on the Internet...
pingtest()
{
    for host in $PING_TARGETS
    do
	#debian#ping -q -n -c 1 -w10 $host >/dev/null 2>&1 && return 0
	#freebsd#ping -q -n -c 1 -t10 $host >/dev/null 2>&1 && return 0
	ping -q -n -c 1 -t10 $host >/dev/null 2>&1 && return 0
    done
    return 1
}

# Return uptime in seconds.  Tested on FreeBSD 13.0 only.  YMMV.
getuptime()
{
    uptime=${1:-$(uptime)}

    days=0
    hours=0
    minutes=0
    seconds=0

    echo "$uptime" | grep -q " day" && 
	days=$(echo "$uptime" | sed -e 's/.*up \([1-9][0-9]*\) day.*/\1/')
    if echo "$uptime" | grep -q "up.* [0-9][0-9]*:[0-9][0-9]*," 
    then
	hours=$(echo "$uptime" | sed -e 's/.*up.* \([0-9][0-9]*\):.*/\1/')
	minutes=$(echo "$uptime" | sed -e 's/.*up.*:\([0-9][0-9]*\),.*/\1/')
	seconds=0
    else
	echo "$uptime" | grep -q " hrs*" &&
	    hours=$(echo "$uptime" | sed -e 's/.*up.* \([0-9]*\) hr.*/\1/')
	echo "$uptime" | grep -q " mins*" &&
	    minutes=$(echo "$uptime" | sed -e 's/.*up.* \([0-9]*\) min.*/\1/')
	echo "$uptime" | grep -q " secs*" &&
	    seconds=$(echo "$uptime" | sed -e 's/.*up.* \([0-9]*\) sec.*/\1/')
    fi

    upseconds=$(((((((($days*24)+$hours)*60)+$minutes)*60)+$seconds)))
    echo $upseconds
}

# # pppd иногда выполняет атомарный повторный набор после того, как получает сообщение о зависании.
# Итак, если кажется, что ссылка недоступна, мы должны дать ей время вернуться.
n=0
while [ $n -lt $REDIALWAIT ]
do
    ifconfig $INTERNET_NIC 2>/dev/null | grep -q "UP[ ,].*RUNNING"
    [ $? -eq 0 ] && pingtest && exit 0
    sleep 1
    n=$((n+1))
done

# Похоже, интернет-соединение действительно не работает...

# Ниже приведен ряд сложных вопросов, связанных со сроками, которые необходимо решить.
# # Возможно, ваш интернет-провайдер вешает трубку каждый раз, когда мы звоним, из-за превышения квоты.
# # Итак, проверьте время безотказной работы и ничего не делайте, пока не истечет несколько минут.
# Кроме того, запуск и остановка ppp асинхронны, поэтому pppd умирает целую вечность,
# и вы должны дождаться, пока он погаснет, прежде чем перезапускать его; кроме того, мы не хотим
# перейдите в (быстрый) непрерывный цикл перезагрузки (следовательно, 15-минутное ожидание).

# Установите минимальную задержку перезагрузки, чтобы остановить цикл быстрой перезагрузки
#debian#upseconds=$(cut -d. -f1 </proc/uptime)
#freebsd#upseconds=$(getuptime)
upseconds=$(getuptime)
[ "$upseconds" -gt $MINUPSECS ] || exit 0
# Выход из системы, если мы уже запустили последовательность завершения работы.
if [ -f /run/systemd/shutdown/scheduled ]
then 
    cat /run/systemd/shutdown/scheduled
else
    #debian#ps -lef | grep shutdown
    #freebsd#ps auxw | grep shutdown
    ps auxw | grep shutdown
fi | grep -q "$SHUTMESSAGE" && exit 0

# We are now committed to a reboot (unless somebody intervenes manually).
logger -p "$LOGPRI" -t "$LOGTAG" "Internet not running"
service internet stop >/dev/null 2>&1
logger -p "$LOGPRI" -t "$LOGTAG" "Cowardly rebooting to re-start Internet"
shutdown -r +15 "$SHUTMESSAGE"

 

Rsync FreeBSD и Syncopoli android

pkg install rsync

Настройка rsync для FreeBSD:

rsyncd.conf:
log file = /var/log/rsync.log
# Писать в лог о скачивание файлов
transfer logging = true

# Set this if you want to stop rsync daemon with rc.d scripts
pid file = /var/run/rsyncd.pid

# Edit this file before running rsync daemon!!

#uid = nobody
#gid = nobody
#use chroot = no
#max connections = 4
#syslog facility = local5

[backup]
uid = root
path = /main/SHARED/rsync
auth users = user
secrets file = /usr/local/etc/rsync/rsyncd.scrt
list = yes
read only = false

# Далее может идти описание других секций(по аналогии с samba и шарами)

Читать далее «Rsync FreeBSD и Syncopoli android»

Виджеты код

Резервная копия кода виджетов сайта от 07.06.2023

1.Отображение IP адреса посетителя

<?php echo $_SERVER['REMOTE_ADDR'] ?>

2. Воспроизведение случайных файлов из папки, на сайте Читать далее «Виджеты код»

Перемещение AppData в windows

  1. Переместить C:\Users\Вася\AppData
  2. Создать символическую ссылку на прежнем месте, указать куда перенесли саму папку:
mklink /J C:\Users\Вася\AppData D:\Вася\AppData

Настройка Squid 3 в качестве прозрачного прокси в FreeBSD

Настраиваем Squid в качестве прозрачного прокси-сервера для небольшой сети.

Содержание

  Читать далее «Настройка Squid 3 в качестве прозрачного прокси в FreeBSD»

FreeBSD: настройка DHCP-сервера на базе ISC DHCP Server

Настраиваем DHCP сервер для офисной сети.

Содержание

Читать далее «FreeBSD: настройка DHCP-сервера на базе ISC DHCP Server»

FreeBSD fortune — цитаты при входе

При логине во фрибсд выходят 3 сообщения:
1. Версия
2. motd — статичный текстовый файл, его можно менять здесь: /etc/motd.template
3. fortune — программа, которая выводит цитаты из файла(одного или нескольких), по-умолчанию случайная строка из файла, расположенного в /usr/share/games/fortune/freebsd-tips
при замене данного файла на свой необходимо пересоздать базу данных freebsd-tips.dat командой:
strfile freebsd-tips

Возможные ошибки
При загрузке будет появляться сообщение вместо цитат: «fortune:freebsd-tips not a fortune file or directory»
Решение: пересоздать пользователя

Для объединения нескольких файлов в один, можно использовать:
cat file1 file2 > file3
тогда файл1 и файл2 будут последовательно записаны в файл3.

не входит в phpMyAdmin после обновления mariadb

Выдавал ошибку при попытке входа в phpMyAdmin, после ввода пароля:
«mysqli::real_connect(): (HY000/2002): No such file or directory»

Решение, прописать в php.ini путь для сокетов, добавив следующие строки в соответсвующий раздел:

mysql.default_socket = /var/run/mysql/mysql.sock
mysqli.default_socket = /var/run/mysql/mysql.sock

https://forums.freebsd.org/threads/cant-connect-to-mysql-database-after-upgrading-to-mariadb-10-4-13_3.76032/

Яндекс.Метрика