пятница, 27 октября 2017 г.

Удаленное восстановление пользовательской машины Ubuntu

Получил удаленную незагружающуюся машину под Ubuntu, удалось найти обычную установочную (инсталяционную) usb flash.
Загрузились в режиме пробовать ubuntu
По viber передавал команды
apt install openssh-server

sudo bash

passwd ubuntu


Когда зашел удаленно
сделал
for i in /sys /proc /run /dev /dev/pts; \
do sudo mount --bind "$i" "/mnt$i"; done

sudo chroot /mnt

 Так как в графическом режиме локальный диск смонтирован, то вместо /mnt правильная папка обычно где нить в /media/имя пользователя/какие то цифры, и так зашел, то скорее всего /etc/resolv.conf копировать не нужно.

Ну а дальше, от исходной проблемы зависит ...

суббота, 21 октября 2017 г.

Planmeca Romexis Viewer ubuntu

Получил снимки сделанные в лаборатории.
На диске записан viewer для macos и windows.
Просмотрщики под android показывали только одну ось, а мне нужен был сагитальный срез.
скопировал java viewer на винт и убрал из скрипта запуска параметры для macos
-Xdock:name='Planmeca Romexis Viewer' -Xdock:icon=../Xtras/Romexis.icns
и память прописал явно
вместо -Xmx$1m  -Xmx2048m

Итого скрипт выглядит так
# scriptPath="${0%/*}"
# export PATH=$PATH:${scriptPath}
# export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${scriptPath}/dylib
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:./dylib

java -Xmx2048m -Dj3d.rend=ogl -classpath '*' romexis_client_viewer.ui.RxViewer  -new3d $2 $3 &

Для удобства проставил права chmod +x start.sh

вторник, 19 сентября 2017 г.

audit apache certificates debian

Написал небольшой скрипт для проверки сертификатов в конфигах apache для debian

Проверяет:
владельцев файлов ключей и сертификатов
имена файлов
проверяет expiration date
удобно вывод перенаправить в csv

вот на github

четверг, 7 сентября 2017 г.

Mysql анализ производительности на работающем сайте

Скачиваем percona tool
 wget https://www.percona.com/downloads/percona-toolkit/3.0.4/binary/debian/xenial/x86_64/percona-toolkit_3.0.4-1.xenial_amd64.deb
 
Ставим percona tool
sudo dpkg -i  percona-toolkit_3.0.4-1.xenial_amd64.deb
 
в консоли
 cd /var/log/mysql

вытираем предыдущий файл лога (копируем "ничего" в файл)
> mysql.log

в консоли mysql
 SET GLOBAL general_log = 'ON';
открываем страницу (выполняем нужные действия)

выключаем лог
SET GLOBAL general_log = 'OFF';

 pt-query-digest --type genlog mysql.log  > report

-----------------------------------------------

Проверяем что работает без индексов
set global log_queries_not_using_indexes='on';
делаем что нужно
set global log_queries_not_using_indexes='off';
Отрезаем все выше необходимого времени
sed  '/Time: 2017-09-05/,$!d' mysql-slow.log
>
report_index.log
Запускает анализ
 pt-query-digest report_index.log > report_without_index

вторник, 16 мая 2017 г.

редиректы nginx много SSL бесплатных сертификатов


Сделать отчет по redirect откуда и куда
#!/usr/bin/python
file = open("redirects","r")
pairs={}
for row in file:
    if 'server_name' in row:
        name=row.strip().split(" ")
    if 'return' in row:
        redir = row.strip().split(" ")
        pairs[name[1]]=redir[3]
file2 = open("report","w")
for key, value in pairs.items():
    file2.write( key+" => "+value+"\n")
file2.close




Генерация конфига nginx  для бесплатных SSL сертификатов let's encrypt для большого количества редиректов

#!/usr/bin/python
file = open("source","r")
pairs={}
for row in file:
    if 'server_name' in row:
        name=row.strip().split(" ")
    if 'return' in row:
        redir = row.strip().split(" ")
        pairs[name[1]]=redir[2]

for pair in pairs.keys():
#    print "certbot certonly -d "+pair+" -d "+pair[4:] (раскоментируем если нужно сгенерировать для бота)
# второй вариант вывода, если файл не нужен
    print "server {"
    print "    listen <Реальный IP>:80;"
    print "    listen <Реальный IP>:443 ssl;"
    print "    server_name",pair, pair[4:]+";"
    print "    location /.well-known {"
    print "        root /var/www/html;"
    print "    }"
    print "    location / {"
    print "    return 301 ",pairs[pair]
    print "    }"
    print "    ssl_certificate /etc/letsencrypt/live/"+pair+"/fullchain.pem;"
    print "    ssl_certificate_key /etc/letsencrypt/live/"+pair+"/privkey.pem;"
    print "    ssl_trusted_certificate /etc/letsencrypt/live/"+pair+"/chain.pem;"
    print "}"



понедельник, 23 января 2017 г.

Ansible собрать активные default gateway на unix системах

Иногда по историческим причинам на сервере может быть настроено несколько default gateway, но реально работает,  конечно, один.

Ansible определяет интерфейс по умолчанию с помощью команды
ip -4 route get 8.8.8.8


Если нужно проверить (провести аудит) настроек шлюзов то можно использовать такой коротенький yml

---
- hosts: all
  become: yes
  tasks:
    - local_action: file path=report state=touch
    - local_action: lineinfile line="System {{ inventory_hostname }} \ 
has gateway {{ ansible_default_ipv4.gateway }}" dest=report
 
Можно вставить проверку и выводить нужные условия
---
- hosts: all
  become: yes
  tasks:
    - local_action: file path=report state=touch
    - local_action: lineinfile line="System {{ inventory_hostname }} has {{ansible_hostname}} \
gateway {{ ansible_default_ipv4.gateway }}" dest=report
      when: inventory_hostname !=ansible_hostname