четверг, 16 октября 2014 г.

перекладываем еженедельные архивы на другой диск/каталог с созданием маршрутов
скрипт работает из cygwin for windows

#!/bin/sh -x
arr=(недельный месячный)

 for dtype in ${arr[@]}; do
   for i in `ls /cygdrive/g/1c_server_backup/$dtype/torg_b* | gawk -F_ '{print $6"_"$7"_"$8}'`; do
      mkdir "/cygdrive/f/arch/1C папка 2/$dtype/$i";
      mv /cygdrive/g/1c_server_backup/$dtype/*$i* "/cygdrive/f/arch/1C папка 2/$dtype/$i";
      chmod 777 "/cygdrive/f/arch/1C папка 2/$dtype/$i/*"
   done
 done
#read -p "Press [Enter] key to start backup..."

send e-mail with python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib,sys,os
if sys.version_info<(3,9):
   from email.mime.multipart import MIMEMultipart
   from email.mime.base import MIMEBase
   from email.mime.text import MIMEText
   from email.utils import formataddr
   from email.utils import formatdate
   from email.utils import COMMASPACE
elif sys.version_info<(2,9):
   from email.MIMEMultipart import MIMEMultipart
   from email.MIMEBase import MIMEBase
   from email.MIMEText import MIMEText
   from email.Utils import COMMASPACE, formatdate
   from email import Encoders

def sendmail(server,sender,recipients,subject,bodymessage,attach_files=[],smtp_debug=0):
   """
    sendmail function for sendmail :)
    parameters
        server:string
        sender:string
        recipients:list
        subject:string,
        bodymessage:string
        attach_files: list or tuple of filenames
        smtp_debug:0/1 - to show debug info
   """
   msg = MIMEMultipart()
   msg['From'] = sender
   msg['To'] = COMMASPACE.join(recipients)
   msg['Date'] = formatdate(localtime=True)
   msg['Subject'] = subject
   msg.attach(MIMEText(bodymessage))
   for f in attach_files:
       part = MIMEBase('application', "octet-stream")
       part.set_payload( open(f,"rb").read() )
       Encoders.encode_base64(part)
       part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
       msg.attach(part)
   try:
     smtpObj = smtplib.SMTP(server)
     smtpObj.set_debuglevel(smtp_debug)
     smtpObj.sendmail(sender, recipients, msg.as_string())
     smtpObj.close()
   except SMTPException:
    return 1
   return 0

if __name__ == '__main__':
   if 0==sendmail('10.10.10.10','from@dom.foo',['to1@dom.foo','to2@dom.foo'],'ololo subject','Hello WORLD!\n',['/tmp/myfile1','/tmp/myfile2']):.
    print "All ok!"
   else:
Пакетник для скачивания по фтп c очисткой старых

set OLDPATH=%cd%
f:

Set TODAYSDATE=%date:~6,8%%date:~3,2%%date:~0,2%

cd  f:\1C-MSK\buh_w\
wget -c --no-remove-listing --ftp-user=USER --ftp-password=PASSWORD ftp://192.168.5.101/Buh_w/*%TODAYSDATE%*.bak
for %%f in (*.bak) do c:\progra~1\winrar\winrar m -tl -m2 "%%f".rar "%%f"
forfiles.exe /D -5 /P . /S /M *.rar /C "cmd /c del @file | more"

cd %OLDPATH%

понедельник, 29 сентября 2014 г.

example routes parsing with python on windows

Задача такая: при подключении к windows vpn надо выловить новое подключение и сделать через него роут на левый ip-шник
Условия: windows! vpn выдает произвольный адрес из сети 192.168.6.0/24
Доп. условие: скрипт должен удалять свое же подключение. Тут легче - ip уникальный.
В принципе, скрипт приурочен к изучению python (отличный язык, имхо)


#by alex. 2014
#-*- coding: cp1251 -*-
import codecs,sys
from os import _exit
from subprocess import check_output

outf = codecs.getwriter('cp866')(sys.stdout, errors='replace')
sys.stdout = outf

route_print=check_output("route print")
routes=route_print.split("\n")

if "192.168.20.21" in route_print:
  if "Y"==raw_input(u"Маршрут уже присутствует!\nХотите удалить?Y/N:").upper():
    check_output("route delete 192.168.20.21")
_exit(0)

resultroute=[]
for i in routes:
   if "255.255.255.255" in i and "192.168.6" in i:
     resultroute=i.split()

if len(resultroute)==0:
 raw_input(u"Не обнаружено подключение! Нажмите ввод для выхода")
 _exit(1)

try:
 check_output("route add 192.168.20.21 mask 255.255.255.255 " + resultroute[3])
except:
 raw_input(u"Маршрут не применен!\nНажмите ВВОД для выхода")
 raise

raw_input(u"Маршрут применен. Нажмите ввод для выхода")

среда, 2 июля 2014 г.

Скрипты для перекладывания архивов sql/1C (windows + forfiles + cygwin)

Допустим архивы создаются в сетевом каталоге "дневной", куда они ежедневно прилетают от sql сервера. Недельный хранится соответственно в сетевой "недельный", а месячный там тоже соответственно.

Начальный каталог для несжатых архивов sql g:\1c_server_backup  (внутри него дневной, недельный и тд)

Там они архивируются и сразу перебрасываются по итоговым местам хранения вот  таким например пакетником:


@echo off 
g:
cd "g:\1c_server_backup\недельный"
F:\arch\forfiles.exe /D -6 /P g:\1c_server_backup\недельный /S /M *.bak > c:\temp\week2rar.tmp
c:\progra~1\winrar\winrar m -m2 -tl "f:\arch\1C папка 2\недельный\weekly-%date:~-10%.rar" @c:\temp\week2rar.tmp

g:
cd "g:\1c_server_backup\месячный"
F:\arch\forfiles.exe /D -28 /P g:\1c_server_backup\месячный /S /M *.bak > c:\temp\mon2rar.tmp
c:\progra~1\winrar\winrar m -m2 -tl "f:\arch\1C папка 2\месячный\monthly-%date:~-10%.rar" @c:\temp\mon2rar.tmp

так же"недельный" "месячный" хотим хранить по нужным каталогам (ГОД_МЕСЯЦ_ДЕНЬ)
Это делаем вот таким cygwin-скриптом

#!/bin/sh
#move2dstdir.sh - скрипт
arr=('недельный' 'месячный')

 for type in ${arr[@]}; do
   for i in `ls /cygdrive/g/1c_server_backup/$type/torg_b* | gawk -F_ '{print $6"_"$7"_"$8}'`; do 
     mkdir /cygdrive/g/1c_server_backup/$type/$i;
     mv /cygdrive/g/1c_server_backup/$type/*$i*.rar /cygdrive/g/1c_server_backup/$type/$i ;done
 done

естественно, что данный скрипт из виндозы мы запускаем командой вроде этой:
C:\cygwin\bin\mintty.exe -e /cygdrive/d/scripts/move2dstdir.sh


среда, 11 июня 2014 г.

Делаем сервер из Zyxel Keenetic Giga II

ссылки для чтения:
http://forum.zyxmon.org/topic136-polnotsennyi-linux-sistema-ustanovki-opkg-na-keenetic-seriya-2.html
http://forum.zyxmon.org/topic181-ustanavlivaem-prilozheniya-vo-vnutrenyuyu-pamyat-kinetika-mini-opros.html

по openvpn
http://forum.zyxmon.org/topic110-openvpn-keenetic-p14.html
http://forum.zyxmon.org/topic110-openvpn-keenetic.html
найденный c трудом модуль для openvpn: https://www.dropbox.com/sh/idacrb5n9icxp0o/0t621uvn9j/1.11final2


вторник, 6 мая 2014 г.

Error /var/log/dpkg.log: status half-configured
Никакие apt-get -f install не помогают. Причина: установка какого-либо пакета не былa корректно закончена --confgure стадия например. Часто лечится:

dpkg --configure -a