Java SE JDK. Скачать в консоли linux

Просто так wget-ом Java SE не скачать, т. к. требуется подтверждение лицензионного соглашения. Но выход есть – с помощью утилиты curl:

curl -LOb "oraclelicense=a" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

Как удалённо перезагрузить роутер 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

Bluetooth клавиатура для Android.

В общем, приобрел на AliExpress клавиатурку для телефона kemile Russian Language Wireless Bluetooth 3.0 keyboard. Цель была – иметь компактную, но при этом функциональную клавиатуру для путешествий или поездок, которую можно подключить к смартфону на базе ОС Android для работы в консоли, удалённого администрирования и т. п.

Работает через блютуз БЕЗ адаптера.

Клавиатура оказалась довольно приятная при наборе текста – как у ноутбуков.

Питается от двух батареек ААА. Для моих задач это лучше, чем от встроенного аккумулятора. Потому что можно не боятся, что аккумулятор убьётся (китайский же) или разрядится быстро. Вставил две батарейки, которые можно купить где угодно (или аккумуляторы формата ААА) – и работай когда это нужно.

Подключается по блютуз к девайсам на ОС андроид, iOS, Windows.

Но конечно же, как и с большинством китайских девайсов, без танцев с бубном не обошлось. Эти танцы заключались в переключении раскладки клавиатуры. В комментариях к товару было много вариантов, у меня (ОС Андроид 9) заработал следующий:

Чтобы переключать языки надо зайти в настройки устройства и найти там пункт «Язык и ввод». Там найти раздел «Физическая клавиатура» (если клавиатура отключена, он в настройках не появится), а в нем пункт «Выбор раскладки клавиатуры». Нужно отметить русскую и английскую (США) раскладки, после чего можно будет переключать раскладку по нажатию Ctrl + Пробел. 

Из других вариантов, что у меня не заработали: Command (Win) + Пробел

Также должен отметить, что раскладка у меня на телефоне чуть не совпадает. К примеру,

  • клавиша Delete это Backspace на самом деле
  • клавиша ?/ (возле правого шифта) набирает ‘|’, почему-то ‘&’ с зажатым шифтом, а с зажатой кнопкой Fn – долгожданный ‘/’. Это в англ раскладке. В русской печатает то, что написано, плюс ‘.’ с зажатым Fn.
  • значек $ не на 4ке, а на 8ке в англ раскладке. в русской всё норм.

В общем, после выяснения вышесказанного, пользоваться этой клавой приятно и я бы рекомендовал к покупке для телефона, планшета или тв-приставки, тем более что цена приятная.

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

Приветствую. Пользуюсь звуковой карточкой 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).

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

Ссылки:

  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