6 марта 2019 г.

Hyper-V репликация и последующая отработка отказа

Важно! Оба гипервизора должны быть в одном домене, подключаться к ним исключительно с машины, которая является членом этого же домена. Все хосты должны между собой резолвиться по FQDN (то есть ваш DNS должен быть уже настроен, либо как костыльное решение -- прописать все хосты в файлах hoshts)

На самих гипервизорах должны быть настроены репликации для приема репликаций:

Кроме того, в параметрах брадмауэра с двух сторон должен быть открыт 80 порт, либо тот который вы укажете в настройках.


28 февраля 2019 г.

Hyper-V перенос всех файлов виртуалок в SAMBA шару

 Оговорюсь сразу: будем переносить не на саму шару, а на виртуальный диск лежащий на шаре.

Буду описывать как делал лично я. Ибо мануалов в интернетах я не нашел, в оснастках Admin Center и Диспетчера Hyper-V возможности подключить именно сетевой VHD нет. Можно подключить SAMBA шару как диск, но на нее перенести файлы виртуалок не удастся, диск просто не будет виден в визарде переноса фалов виртуалки.

20 июня 2018 г.

BASH скрипт проверки доступности хоста с СМС уведомлениями

#!/bin/bash
# https://www.mynote.pp.ua
#
# Скрипт в бесконечном цикле пингует удалённый хост в инете с интервалом 60 сек
# при первой удачной или неудачной попытке пинга пишется соответствующее сообщение в лог
# следующая запись в лог делается только при изменении состояния связи
# инициализация переменной результата, по умолчанию считается, что связь уже есть
#допилена отправка смс через smstools
result=connected
# смена текущего каталога перед записью лога
cd /var/log
echo `date +%Y.%m.%d__%H:%M:%S`' Автоматический запуск скрипта при загрузке сервера' >> inet.log
# бесконечный цикл
while [ true ]; do
    # пинг google.com с последующей проверкой на ошибки
    errorscount="$(ping -c 3 google.com 2<&1| grep -icE 'unknown|expired|unreachable|time out')"
    # если предыдущий пинг был удачен, а текущий нет, т.е. вывод ping содержит ошибки, то
    if [ "$result" = connected -a "$errorscount" != 0 ]; then
    # запоминаем результат текущего пинга
    result=disconnected
    # и пишем в лог время разрыва соединения
    echo `date +%Y.%m.%d__%H:%M:%S`' * Cвязь отсутствует' >> inet.log
    /usr/local/bin/sendsms 380951234567 'The internet is down!'
    fi
    # если предыдущий пинг был неудачен, а текущий успешен, то
    if [ "$result" = disconnected -a "$errorscount" = 0 ]; then
    # запоминаем результат текущего пинга
    result=connected
    # и пишем в лог время установки соединения
    echo `date +%Y.%m.%d__%H:%M:%S`' Связь восстановлена' >> inet.log
    /usr/local/bin/sendsms 380951234567 'The internet is up!'
    fi
    # минутная задержка
    sleep 60
done

Drop баз MS SQL из Linux

qsh -S 192.168.1.100 -U user-P password -C "\
ALTER DATABASE [TEST]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
go
USE master;
go
DROP DATABASE TEST ;
go
"

9 октября 2017 г.

Windows Active Directory заметки

 Сброс пароля компа в домене без ребута и лишних плясок

От локаьлного администратора:

Netdom -RESETPWD /Server:DOMAIN_CONTROLLER /UserD:DOMAIN\adm /PasswordD:11111


 Ресинк времени с контроллера домена 

w32tm /resync /rediscover

6 сентября 2017 г.

DANTE SOCKS5 PROXY + AUTH

cd /usr/src/

wget http://www.inet.no/dante/files/dante-1.4.1.tar.gz

tar xvfz dante-1.4.1.tar.gz

cd dante-1.4.1/

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-client --without-libwrap --without-bsdauth --without-gssapi --without-krb5 --without-upnp --without-pam

make && make install

nano /etc/init.d/sockd


#! /bin/sh
### BEGIN INIT INFO
# Provides:          sockd
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start the dante SOCKS server.
# Description:       SOCKS (v4 and v5) proxy server daemon (sockd).
#                    This server allows clients to connect to it and
#                    request proxying of TCP or UDP network traffic
#                    with extensive configuration possibilities.
### END INIT INFO
#
# dante SOCKS server init.d file. Based on /etc/init.d/skeleton:
# Version:  @(#)skeleton  1.8  03-Mar-1998  miquels@cistron.nl
# Via: https://gitorious.org/dante/pkg-debian

PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=sockd
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="-D"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DESC="Dante SOCKS daemon"
CONFFILE=/etc/$NAME.conf

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

set -e

# This function makes sure that the Dante server can write to the pid-file.
touch_pidfile ()
{
  if [ -r $CONFFILE ]; then
    uid="`sed -n -e 's/[[:space:]]//g' -e 's/#.*//' -e '/^user\.privileged/{s/[^:]*://p;q;}' $CONFFILE`"
    if [ -n "$uid" ]; then
      touch $PIDFILE
      chown $uid $PIDFILE
    fi
  fi
}

case "$1" in
  start)
    if ! egrep -cve '^ *(#|$)' \
        -e '^(logoutput|user\.((not)?privileged|libwrap)):' \
        $CONFFILE > /dev/null
    then
        echo "Not starting $DESC: not configured."
        exit 0
    fi
    echo -n "Starting $DESC: "
    touch_pidfile
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
        $DAEMON_ARGS \
        || return 2
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    echo "$NAME."
    ;;
  reload|force-reload)
    #
    #   If the daemon can reload its config files on the fly
    #   for example by sending it SIGHUP, do it here.
    #
    #   If the daemon responds to changes in its config file
    #   directly anyway, make this a do-nothing entry.
    #
     echo "Reloading $DESC configuration files."
     start-stop-daemon --stop --signal 1 --quiet --pidfile \
        $PIDFILE --exec $DAEMON -- -D
  ;;
  restart)
    #
    #   If the "reload" option is implemented, move the "force-reload"
    #   option to the "reload" entry above. If not, "force-reload" is
    #   just the same as "restart".
    #
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
    sleep 1
    touch_pidfile
    start-stop-daemon --start --quiet --pidfile $PIDFILE \
      --exec $DAEMON -- -D
    echo "$NAME."
    ;;
  status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
  *)
    N=/etc/init.d/$NAME
    # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $N {start|stop|restart|status|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

chmod +x /etc/init.d/sockd
update-rc.d sockd defaults 100

nano /etc/sockd.conf



internal: eth0   port = 45455
external: eth0
user.privileged:   root
user.unprivileged: nobody
socksmethod:       username
logoutput:         /var/log/sockd.log
connecttimeout: 60

client pass {
        from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
}

client block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}

socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        protocol: tcp udp
}

useradd -s /dev/null remote
passwd remote

16 июля 2017 г.

BASH заметки

Обрезка grep-a от символа < до >, или же вырезка конкретных кусков текста из вывода:

cat file.txt
text < 123 >  text

рэжем:

cat file.txt | grep "text" | sed 's|.*<||'|sed -r 's/>.+//'
 123.

12 января 2017 г.

Jabber server с прозрачной авторизацией в Active Directory (Openfire + AD + Pandion)

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