Зручне налаштування автозавантаження сервісів в Debian/Ubuntu

# apt-get install rcconf sysv-rc-conf

і запуск

# sysv-rc-conf


Бан пошукових ботів в nginx

В самому верху віртуалхоста:

map $http_user_agent $limit_bots {
     default 0;
     ~*(google|bing) 1;
     ~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
     ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
     ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
     ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
     ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
     ~*(Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
}

В середині location /

if ($limit_bots = 1) {
  return 403;
}

Для перевірки:

# curl -H "Host: site_name" -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" http://server_ip
# curl -H "Host: site_name" -A "msnbot/2.0b (+http://search.msn.com/msnbot.htm)" http://server_ip
# curl -H "Host: site_name" -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://server_ip

Скрипт оновлення безкоштовних сертифікатів letsencrypt

DOMAINS=$HOSTNAME
systemctl stop nginx
/opt/letsencrypt/letsencrypt-auto certonly --debug -d $DOMAINS --email hostmaster@$HOSTNAME --standalone --renew-by-default --agree-tos --standalone-supported-challenges tls-sni-01 &&
cp -Lr /etc/letsencrypt/live/$HOSTNAME/cert.pem /usr/local/mgr5/etc/manager.crt &&
cp -Lr /etc/letsencrypt/live/$HOSTNAME/privkey.pem /usr/local/mgr5/etc/manager.key &&
systemctl start nginx
#killall5 -9 core

Автоматичний записувач ефіру радіостанції

Виникла ідея змайструвати найпростіший повторювач (репітер, попугай) за допомогою радіостанції, комп'ютера та невеличкої схеми.

Алгоритм працю наступним чином.
З радіостанції знімається звук через вихід на колонку шнуром з резисторним дільником та включеним в мікрофонний вхід ноутбука. Резисторний дільник потрібен щоб зменшити рівень сигналу з радіостанції, бо мікрофонний вхід досить чутливий. На ноутбуці працює наступний скрипт:


#!/bin/bash

while :
do
    ./rec.py
    DATE=`date +%Y%m%d%H%T`
    mv demo.wav demo-$DATE.wav
    #vlc demo-$DATE.wav &
    #killall -9 vlc
    echo "recorded $DATE"
done

і цикл, в якому відбувається запис та відтворювання записаного сигналу (останнє в стадії розробки). В гніздо навушників буде включено "дравйвер" реле, який буде слухати сигнал в навушниках і в разі його появи, реле буде спрацьовувати та імітувати натискання тангенти, також цей сигнал буде подаватись на мікрофонний вхід радіостанції. Що з того вийде, побачимо. На даний момент

і власне результат роботи скрипта:

apache2 + php7 з коробки не запустився в Linux Mint 18

Видає помилку: "Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP"

Вирішення:
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo service apache2 restart

Python-скрипт для видалення старих бекапів через FTP

#!/usr/bin/python

import time
import ftputil

host = ftputil.FTPHost('ftphost', 'ftpuser', 'ftppass')
mypath = ['/', '/dir1', '/dir2', '/dir3', '/dir3',] # директорії з яких видаляти бекапи
now = time.time()

for p in mypath:
    host.chdir(p)
    names = host.listdir(host.curdir)

    for name in names:
        if host.path.getmtime(name) < (now - (7 * 86400)): # 7 днів
            if host.path.isfile(name):
                host.remove(name)


print 'Closing FTP connection'
host.close()

Viber fix

В Mint (Ubuntu) перестав працювати Viber. Перевстановлення не допомагало.
 При запуску отримував помилку:
This application failed to start because it could not find or load the Qt platform plugin "xcb"

Вирішилось досить просто:
sudo apt-get install libxcb-*

Sniff RTSP URL в китайській камері

Прийшла китайська ІР-камера, а задокументований rtsp URL не запрацював, хоча в браузері відео виконується.

Просніфити шлях просто:

ngrep -q -d wlan0 -W byline port 554




vkontakte пост на власну стіну з аплоадом фотографії на python

session = vk.Session(access_token='blahblahblah')
api = vk.API(session)
upload_server = api.photos.getWallUploadServer()
r = requests.post(upload_server['upload_url'], files={'photo': open("/home/gsv/photo.jpg","rb")})
params = {'server': r.json()['server'], 'photo': r.json()['photo'], 'hash': r.json()['hash']}
wallphoto = api.photos.saveWallPhoto(**params)
photoID = wallphoto[0]['id']
params = {'attachments': str(photoID), 'message': 'Тест'}
api.wall.post(**params)