Как удалённо перезагрузить роутер Asus RT-N18U

Для начала убедимся, что включен телнет. На Вкладке Administration -> System включаем Enable Telnet -> Yes. Жмём Apply внизу.

Теперь сам bash-скрипт, который можно подвязать к чему угодно. Например, к звонку по Asterisk:

!/bin/bash
(sleep 3;echo user;sleep 3;echo password;sleep 3;echo reboot;sleep 3;) | telnet router_ip

где нужно вписать свои данные:

  • user – имя пользователя (для входа на веб-морду роутера)
  • password – пароль для веб-морды
  • router_ip – IP адрес роутера.

Работает также и с другими подобными роутерами Asus.

Установка GUI дя Nagios Vshell2

ОС – Unumtu 18.04, но с модификациями подходит для любой ОС

Для начала установим требуемый пакет (предполагается что apache2, php, nagios у вас уже установлены и натсроены):

apt-get install php7.2-intl

Теперь скачиваем архив с оболочкой отсюда:

https://github.com/NagiosEnterprises/nagiosvshell/tree/2.x

На сервер, распаковываем и открываем файл конфигурации:

wget https://github.com/NagiosEnterprises/nagiosvshell/archive/2.x.zip
unzip 2.x.zip
cd nagiosvshell-2.x/
nano config.php

Строки, на которые следует обратить внимание, выделены жирным шрифтом. Значения по-умолчанию указаны для nagios3, установленного через пакетный менеджер. У меня уже был nagios 4, установленный внучную. Необходимые поправки для путей установки, расположения конфигурационного файла сайта и файла пользователей стандартного Nagios GUI дописываем в скобки ” в разделе $custom = array(

<?php
Custom values
#
Add any custom values here. If a value is empty, the default value defined
below is used.
$custom = array(
'targetdir' => '',
'apacheconfdir' => '',
'apacheconffile' => '',
'apacheuser' => '',
'apachegroup' => '',
'etc_conf' => '',
'htpasswd_file' => '',
# See config/vshell.conf for explanations of each value
'vshell_baseurl' => '',
'TTL' => '',
'update_interval' => '',
'nagios_coreurl' => '',
'lang' => '',
);
Default values
#
Do not edit these defaults
$defaults = array();
$defaults['debian'] = array(
'targetdir' => '/usr/local/vshell2',
'apacheconfdir' => '/etc/apache2/sites-enabled',
'apacheconffile' => 'vshell2.conf',
'apacheuser' => 'www-data',
'apachegroup' => 'www-data',
'etc_conf' => 'vshell2.conf',
'htpasswd_file' => '/etc/nagios3/htpasswd.users',
'vshell_baseurl' => 'vshell2',
'nagios_coreurl' => 'nagios3',
'TTL' => '90',
'update_interval' => '90',
'lang' => 'en_GB',
);
$defaults['redhat'] = array(
'targetdir' => '/usr/local/vshell2',
'apacheconfdir' => '/etc/httpd/conf.d',
'apacheconffile' => 'vshell2.conf',
'apacheuser' => 'apache',
'apachegroup' => 'apache',
'etc_conf' => 'vshell2.conf',
'htpasswd_file' => '/etc/nagios/passwd',
'vshell_baseurl' => 'vshell2',
'nagios_coreurl' => 'nagios',
'TTL' => '90',
'update_interval' => '90',
'lang' => 'en_GB',
);

Теперь даём права на запуск и запускаем install.php:

chmod +x install.php
./install.php

Скрипт сделает всё сам. И если все данные были указаны правильно в конфиг-файле, то мы сможем увидить новую оболочку по адресу http://your_server_ip/vshell2

Если видите ошибку 500 или ещё что – лопатим логи apache (/var/log/apache2/error.log) на предмет того что пошло не так.

Как переместить файлы Bluestacks (эмулятор Андроид) на другой диск

Недавно возникла необходимость перенести файлы эмулятора ОС Андроид Bleustacks на другой диск. Можно сделать “бекап, переустановка, восстановлени”, но я нашел путь проще – создать ссылку на новое расположение, чтобы “обмануть” старую инсталляцию.

Итак делаем следующие шаги:

  1. Закрываем Bluestacks
  2. Перемещаем файлы например из изначальной папки D:\Programs в новую F:\Program Files\Bluestacks
  3. Открываем консоль (открываем стартовое меню, находим cmd и запускаем от имени администратора, если нужно)
  4. Создаём ссылку:
mklink /D /J D:\Programs\Bluestacks "F:\Program Files\BlueStacks"

Результат:

Junction created for D:\Programs\Bluestacks <<===>> F:\Program Files\BlueStacks

Ссылки:

  1. https://android.stackexchange.com/questions/140598/how-can-i-copy-program-files-bluestacks-folder-to-another-drive
  2. https://www.bluestacks.com/

Linux, команда для траблшутинга загрузки I/O подсистемы

Быстрая заметка. Иногда случается что дисковая I/O подсистема чем-то сильно нагружена и не понятно, каким именно процессом. В определении виновника может помочь следующая команда:

top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D (I/O wait probably): "count}' > topsave.txt

Creative Audigy 2 нет звука на Windows 10 1903/1909/../21H1

Приветствую. Пользуюсь звуковой карточкой Creative Audigy 2 (SB0240). Несмотря на то что звуковой карте уже лет и памяти, звук в ней очень классный – сочные басы и хорошая четкость и разборчивость звучания. На голову лучше встроенных в материнские платы звуковых чипов.

Кстати, этот гайд должен подойти и к карточке Creative Audigy 2 ZS, но насчёт Creative Audigy 2 SE я не уверен, т к это урезанная версия и у неё другие драйвера.

Всё было отлично, но после обновления Windows 10 на версию 1903 (тоже самое будет и с 1909) перестала работать эта звуковая карта. После поиска решения, у меня заработало следующее:

1. Сначала удалите все драйвера для звуковой карты.

Есть альтернативный пак драйверов от энтузиаста (Daniel_k), который можно найти [здесь]. Скачиваем этот драйвер пак и распаковываем. В папке KillDrvX запускаем KillDrvX.exe от Администратора и убиваем старый драйвер, чтобы можно было полностью его деинсталлировать.

Затем удаляем драйвера из Панели управления -> Программы и компоненты или путём запуска инсталлятора и выбора пункта Деинсталляции) и затем само устройство из Диспетчера Устройств.

Затем перезагружаем ПК.

2. Переходим в папку с драйвер паком, скачанным ранее, и запускаем инсталляцию тип Full Installation или можно Custom и отметить что вам нужно (можно ставить всё, кроме софта Dolby – он платный). Крайне желательно ничего не делать в это время и не дёргать компьютер. Если во время установки будет ругаться, что не может создать ярлыки, то кликаем Пропустить/Игнорировать – ничего страшного в этом нету, создадим ярлыки потом сами (Ctrl+Shift+Перетаскивание исполняемого файла из папки, куда установится драйвер пак – по-умолчанию это C:\Program Files (x86)\Creative\SBAudigy2 и там в подпапках есть Эквалайзер и прочие утилиты).

Перезагружаем ПК, когда инсталлятор попросит, и проверяем звук.

3. Если звука по прежнему нет (как и было в моём случае), то нам нужно “подкормить” операционной системе файл драйвера от производителя.

Для этого скачиваем драйвер [Отсюда]. Вводим капчу и открываем скачанный файл в архиваторе (7-zip к кпримеру) и распаковываем. Папка будет что-то вроде “SBA5_PCDRV_L11_3_01_0056B”.

Переходим в поддиректорию Audio -> DriversWin10 -> wdm. Находим файл “wdma_emu.inf“, щелкаем правой кнопкой мыши и в контекстном меню выбираем Установить (Install).

Перезагружаемся и наслаждаемся хорошим звуком.

UPDATE:

Сейчас проапдейтил Windows до 21H1 – карточка работает без проблем.

Ссылки:

  1. https://answers.microsoft.com/en-us/windows/forum/all/no-sound-after-windows-10-update-1903-or-1909-but/9abd44d2-bf95-46f9-ade3-55b8fc798f29
  2. http://danielkawakami.blogspot.com/2017/01/sb-audigy-series-support-pack-62.html
  3. https://support.creative.com/downloads/download.aspx?nDownloadId=100229

Предыдущий рабочий день в python

Чтобы получить предыдущий рабочий день в python, делаем нехитрые преобразования:

import datetime, time
lastBusDay = datetime.datetime.today()
shift = datetime.timedelta(max(1,(lastBusDay.weekday() + 6) % 7 - 3))
lastBusDay = lastBusDay - shift

Т. е. мы получаем, например, вторник в среду. А в субботу, вск и Пн мы получим пятницу. Далее можно преобразовать дату в нужный нам формат и пользоваться:

date = lastBusDay.strftime('%Y%m%d')

Python скриптинг: как зайти на FTP или FTPS

Бывает нужно что-то скачать/загрузить на удалённый сервер FTP или FTPS (не путать с SFTP) в скрипте на пайтоне.

Подключаем необходимые библиотеки:

from ftplib import FTP_TLS
from ftplib import FTP

Задаём параметры подключения к FTP хосту:

host = "some_ftp.com"
port = 21
username = "username"
password = "password"

Подключаемся к обычному FTP (в примере скачиваем файл на диск):

ftp = FTP(host)
ftp.login(username, password)
try:
    handle = open('/path_to_local_file/filename', 'wb')
    ftp.retrbinary('RETR /path_to_remote_file/filename, handle.write)
    handle.close()
except:
    pass
ftp.quit()

Все команда нужно указывать по спецификации FTP протокола, например такой.

Осовные команды:
RETR – получить файл с FTP в переменную или по хендлеру записать в локальный файл;
LIST – показать список файлов/директорий в указанной или текущей по-умолчанию;
NLST – то же, что и LIST, но возвращает только имена файлов/директорий;
STOR – загрузить с презаписью файл на FTP-сервер;
и другие

Подключение к FTPS выполняется схожим образом:

try:
    handle = open('/path_to_local_file/filename', 'wb')
    ftps = FTP_TLS(host)
    ftps.login(username, password)
    ftps.prot_p()
    ftps.retrbinary('RETR /path_to_remote_file/filename', handle.write)
    ftps.quit()
    handle.close()
except:
    pass

Для работы FTP_TLS нужен пайтон 2.7+, если у вас только 2.6, то придётся сделать одно из следующего:
1. Доустановить пайтон 2.7, например как описано здесь для Oracle Linux 6:

Редактируем /etc/yum.repos.d/public-yum-ol6.repo и убеждаемся, что enabled=1 в следующем параграфе:

[ol6_software_collections]
name=Software Collection Library release 3.0 packages for Oracle Linux 6 (x86_64)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/SoftwareCollections/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

Далее выполняем команды от рута/судо:

yum install scl-utils
yum install python27
source /opt/rh/python27/enable
python --version

Если при запуске скрипта по cron (а скорее всего так и будет) выбивает ошибку вида:

error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

То необходимо добавить путь к библиотеке в /etc/ld.so.conf и запустить команду ldconfig, которая сама всё пропишет.

или

2. Cкачать дистрибутив пайтона 2.7 отсюда и вытащить фал ftplib.py и положить его в папку со скриптом (если скрипт запускается по cron, то это может не сработать):

wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -zxvf Python-2.7.1.tgz Python-2.7.1/Lib/ftplib.py
cp Python-2.7.1/Lib/ftplib.py /path_to_script/

или

3. Заходить на FTPS вызывая bash команды например lftp с помощью модуля subprocess.

Ссылки:

  1. https://docs.python.org/3/library/ftplib.html
  2. https://stackoverflow.com/questions/11573817/how-to-download-a-file-via-ftp-with-python-ftplib
  3. https://stackoverflow.com/questions/20842732/libpython2-7-so-1-0-cannot-open-shared-object-file-no-such-file-or-directory
  4. https://docs.cloudera.com/documentation/enterprise/6/6.0/topics/install_python_27.html

Удаленное выполнение команд на Windows

Для удаленного выполнения команд в Windows есть отличная штука – PsExec. Принципиально похожа на линуксовый SSH. Эта утилита работает со всеми версиями Windows, начиная с XP (XP, 2003, Vista, 2008, 7,8, 2012).

Итак, на локальной машине скачиваем утилиту (точнее, набор утилит), с сайта Microsoft Technet и распаковываем, например, в папку C:PSTools.
Далее, открываем консоль путем [Win+R] или Пуск – Выполнить – cmd.
Переходим в распакованную папку:

cd C:\PSTools

Теперь мы можем выполнять команды на удаленной Windows машине, запуская psecex в таком формате:

psexec \remote_name_or_ip -u user -p password command

На удаленной машине должны быть запущены службы Server и Workstation.

Вот так – из-коробки – работает только на Windows 2003/XP. В версиях начиная с Vista из-за другого механизма доступа (UAC и т. д.), необходимо немного “пошаманить”.

На удаленной машине под управлением Windows Vista или поздней открываем Редактор Реестра (Start – Run – regedit) и создаём ключ реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemLocalAccountTokenFilterPolicy типа DWORD и со значением 1.

Всё, теперь можно выполнять команды и на удаленной Vista+ системе, выполняя следующую команду:

psexec \remote_name_or_ip -u user -p password -h command

Флаг -h нужен, чтобы запустить команду от имени Администратора.

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

А для того, чтобы получить шелл на удаленной машине, выполняем команду:

psexec \remote_name_or_ip -u user -p password -h cmd

Ссылки:

  1. http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
  2. http://forum.sysinternals.com/faq-common-pstools-issues_topic15920.html
  3. http://stackoverflow.com/questions/828432/psexec-access-denied-errors

Как разбанить IP в fail2ban

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

Чтобы разбанить IP адрес, нужно на сервере выполнить следующие команды.

Вначале посмотреть цепочки правил (jail):

fail2ban-client status

Результат будет что-то вроде такого:

Status
|- Number of jail: 3
`- Jail list: apache, ssh, apache-modsecurity

Затем в разбаниваем IP в нужной “клетке” (цепочке правил):

fail2ban-client set JAILNAMEHERE unbanip IPADDRESSHERE

В старых версиях Fail2ban может не существовать команды unbanip, тогда вы будете получать ошибку вида:

Invalid command (no set action or not yet implemented)

Здесь придётся перезагрузить “клетку”, что уберёт из неё все баны:

fail2ban-client reload JAILNAMEHERE

Также можно добавить IP в список исключений чтобы он не блокировался, если вы что-то тестируете:

fail2ban-client set sasl addignoreip 198.32.110.100

Посмотреть, какие IP забанены в “клетке” можно с помощью команды:

fail2ban-client status JAILNAMEHERE

Ну и посмотреть список доступных команд:

fail2ban-client -h

Installation of .net framework 3.5 on Windows Server 2012

(пост из старых заметок)
If you have Windows Server 2012 iso file or DVD, you can install .net framework 3.5 on Windows Server 2012 easly.
1. You have to insert Windows Server 2012 DVD or iso to D drive (change letter according to your configuration).
2. Open Add Roles and Features Wizard
3. Select .NET Framework 3.5 Features and then click next,
4. Select Specify an alternate source path link in the Confirm installation selections screen.
5. Path: D:\Sources\SxS and then click OK.
6. Finally click Install button.