Поиск по этому блогу

среда, 28 марта 2012 г.

Скрипт пинговалки на основе fping

Стоит задача упростить жизнь сотрудников отдела наблюдающего за состоянием сети. Для этого создадим небольшой bash-скрипт, кладем его в любую директорию, даем права на исполнение, загоняем в crontab, наслаждаемся получаемыми письмами на корпоративную почту.
0) установим fping sudo apt-get install fping 
1) переходим в нужный раздел cd /adm 
2) создаем пустой файл touch ping.sh 
3) редактируем его nano ping.sh 
4) копируем, вставляем и сохраняем текст срипта:
#!/bin/bash
HOSTS="mail.ru google.com ya.ru twitter.com youtube.com facebook.com yahoo.com wikipedia.org linkedin.com bbc.co.uk kernel.org opennet.ru habrahabr.ru"
COUNT=100
for myHost in $HOSTS
do
fping -c $COUNT -q -n $myHost >> pinga.sh.log 2>&1
done
while read SITE A CAP1 B PERCENT CAP2 C DELAY; do
printf '%20s %c %s %c %15s %s %c %20s\n' "$SITE" "$A" "$CAP1" "$B" "$PERCENT" "$CAP2" "$C" "$DELAY"
done < pinga.sh.log | sort  > pingb.sh.log
SUBJECT="ping - world hosts"
EMAIL="support@domain.ru"
EMAILMESSAGE="pingb.sh.log"
/usr/bin/mail -s "$SUBJECT" $EMAIL < $EMAILMESSAGE
cat $EMAILMESSAGE
rm pinga.sh.log pingb.sh.log
5) даем права на исполнение файлу chmod +x ping.sh
6) добавляем задачу в crontab nano /etc/crontab */15 * * * * root /adm/ping.sh 1>/dev/null скрипт будет отрабатывать каждые 15 минут и слать на почту отчеты.

Original Link

воскресенье, 25 марта 2012 г.

Скрипт bash: две локалки или интернет через вторую локальную сеть на Debian

      И так как то я объяснял уже один раз, как можно на сервере поднять свою подсеть описание было тут.
     Задача есть сервер поднятый на Debian squeeze на которо установлено две сетевые карты это
eth0 и eth1
eth0 - сетевой адресс 192.168.5.75 шлюз 192.168.5.1 подается интернет от свитча.
eth1 - сетевая карта подключенная в другой свитч или хаб, где нужна мне первая подсеть 192.168.1.0/24
     К чему все это?! А для того чтобы можно было подключать другие узлы и непосредственно не просить все время админа добавлять в white list локальный ипе(задолбало уже).
Так вот появился скрипт на bash который нужно впихнуть в путь /etc/init.d/
Приступим создадим файл с громким названием iptables содержащий код:

#! /bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
#iptables -t mangle -F
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.1.0/8 -j SNAT --to-source 10.10.10.6
 
############acl############
#LAN_NET=192.168.0.1/24
#WAN_IP=10.10.10.5
############nat##################
#iptables -t nat -A POSTROUTING -s $LAN_NET ! -d $LAN_NET -j SNAT --to-source $WAN_IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 
#secure ssh
iptables -A INPUT -p tcp --dport 22 -s 10.10.10.0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.5.75  -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Поясню скрипт, а именно пункт ssh, где 10.10.10.0,192.168.5.75 с этих ипе доступ по ssh разрешен другим закрыт На закомментированные строки можете не обращать внимания вообще, это свои заметки для себя же и так сам скрипт будет конечный таков:
#! /bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#secure ssh
iptables -A INPUT -p tcp --dport 22 -s 10.10.10.0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.5.75  -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
И так конечный результат таков, через пятую подсеть интернет проходит на первую чуть не забыл не забудьте скрипт сделать исполняемым, а именно #chmod +x /etc/init.d/iptables либо путь, где лежит сам файл #chmod +x /путь/путь

среда, 21 марта 2012 г.

Скрипт по сборке трафика с сетевой карты Debian squeeze

И так решил написать скрипт по сборке трафика с сетевой карты я пока на стадии разработке решил что будет всего 5-6 скрипт файлов первый из них
inst_ip.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-

import os
from os.path import isfile

checks= isfile("/usr/lib/iptraf")
if not checks:
    x=raw_input("Вы еще не установили прогу хотите установить ее? Y or N: ")
    if x in ['Y', 'y']:
        os.system("apt-get install iptraf")
        os.system("apt-get install netaddr")
        print "\033[1;32mПакет успешно установлен!\033[1;m"
    else:
        print "\033[1;32mЛибо вы прервали установку выбрав N либо вы индус\033[1;m"

Второй скрипт название run_ip.py который нужно добавить в cron либо запускать в ручную от рута
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
ethernet=raw_input("Введите сетевую карту Например eth0: ")
os.system("iptraf -i %s -L logi" % ethernet)

Третий скрипт get_ip.py который будет снимать логи за последние например пять минут и преобразует в читабельный вид для арифметических действий
#!/usr/bin/env python
#-*- coding: utf-8 -*-

import re
from datetime import datetime, timedelta
#при помощи условия уберем пробелы в первоначальном логе
a=open('/var/log/iptraf/logi')
b=open('/var/log/iptraf/logs', 'w')
for line in a:
    stripped = line.strip()
    if not stripped:
        continue
    else:
        b.write(line)
#Теперь же снимем логи т.е цифры 
timestamp = datetime.now() - timedelta(minutes=5)#от текущего времени отнимем задаваемое время в минутах

# лямбда выбирает первые 24 символа (длина даты в формате ANSI C),
# парсит дату и возвращает результат сравнения ее с timestamp
# по-хорошему, вместо %с, нужно задавать формат даты явно
is_new = lambda line: datetime.strptime(line[:24],'%c') > timestamp
#С открытого файла считываем логи и срезаем их до 24 символов и сохраняем в др лог
with open('/var/log/iptraf/logs', 'r') as input:
    with open('/var/log/iptraf/logg', 'w') as output:

        # фильтрация только новых записей
        for line in filter(is_new, input):
            output.write(line)

#считваем данные с  logs и выбираем только сам трафик           
data = open('/var/log/iptraf/logg','r')
output = open('/var/log/iptraf/logo', 'w')

for line in data:  # For each line
    match = re.findall("(\d+ bytes)", line)  # Find all strings matching "number bytes"
    for result in match:
        output.write("%s\n" % match)  # save each result to output file
# Remember to close the files
output.close()
data.close()
Четвертый скрипт sumlog_ip.py который будет снимать логи за последние например пять минут и преобразует в читабельный вид для арифметических действий
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import re

c=open("/var/log/iptraf/logo")
v=open ("/var/log/iptraf/sumlog","w")
#Отбросим все не нужное оставить только цифры
for line in c:
    match = re.findall("(\d+\d)", line)
    v.write("%s\n" % match)
c.close()
v.close()
Пятый скрипт сама арифметика назовем его arifm_ip.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import re
#Теперь сама математика
x=open("/var/log/iptraf/sumlog")
#q=open("/var/log/iptraf/last","w") #ответ можно вывести в другой файл

txt=x.read()
mas = re.findall('\d+', txt)
xx=sum([int(m) for m in mas])# Суммируем данные чтобы предоставить в читабельном виде

print 'За 5 мин вы прожгли: %.2f МБ' %(xx/1024/1024)
#q.write(str(xx))
x.close()
Original article

вторник, 13 марта 2012 г.

Скрипт на python по замене нескольких строк.

     И так не хотел переделывать уже ранее написанные скрипты, но появилась одна весчь которая будет очень полезна в будущем. Так вот если нам необходимо заменить несколько строк в файле,то ранее я это делал через несколько функций и при этом код увеличивался. Поэтому был найден более оптимальный вариант так вот есть файл: /etc/icecast2/icecast.xml в нем надо изменить пароль '123' на желаемый.
..............................
    
        123
        123
        admin
        123
    
.............................
Теперь сам исходник:
 

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import re
line_q=raw_input("Password ") #here we give new password
c =  open("/home/nosensus/trash/icecast.xml", 'r') #path to original file
data = c.read()
c.close()
for tag in ['source', 'relay']:
    sub_str = "%s".format(tag)
    data = re.sub(sub_str % '123', sub_str % line_q, data)
    sub_str = "%s".format(tag)
    data = re.sub(sub_str % '123', sub_str % line_q, data)
    sub_str = "%s".format(tag)
    data = re.sub(sub_str % '123', sub_str % line_q, data)
 
c = open("/home/nosensus/trash/icecast.xml" + '.new', 'w') #path to save new file
c.write(data)
c.close()

воскресенье, 11 марта 2012 г.

Скрипт Icecast2 сервер радио вещания на Debian

       И так решил написать скрипт для поднятия сервера радио вещания icecast.
И так решил написать скрипт для поднятия сервера радио вещания icecast.
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os,sys,re
x=raw_input ("if you really want to install RADIO-VIDEO server choose Y or N > ")
if x in ['y', 'Y']:
    os.system("apt-get install libshout-dev -y && apt-get install libmp3lame-dev -y && apt-get install libxml2-dev -y")
    os.system("apt-get install libjavacc-maven-plugin-java -y")
    os.system("apt-get install jtb -y && apt-get install javacc-doc -y && apt-get install g++ -y")
    os.system("apt-get install gpp -y && apt-get install partimage-doc -y  && apt-get install vacation -y")
    os.system("apt-get install clisp -y && apt-get install clisp-dev -y")
    os.system("apt-get install clisp-doc -y && apt-get install partimage -y")
    os.system("apt-get install fldiff -y && apt-get install gawk -y && apt-get install perl -y")
    os.system("apt-get install python-cxx -y && apt-get install python-cxx-dev -y")
else:
    print "Connection LOST"
#Downloading and installing ices
pathh = raw_input("Enter full path where U want save file, example /home/user/Downloads/ -> ")
url = "http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz"
wget = "wget -c " + url + " -P " + pathh
try:
    os.system(wget)
except:
    print "Connection refused"
    sys.exit()
os.system("cd " + pathh + " && tar -zxvf ices-0.4.tar.gz -C " +pathh)
os.system("cd " + pathh + "ices-0.4" + " && ./configure")
os.system("cd " + pathh + "ices-0.4" +" && make")
os.system("cd " + pathh + "ices-0.4" +" && make install")
os.system("apt-get install icecast2 -y")
#let's configure ices config
x=raw_input ("enter password for access to admin panel ices -> ")
def ices2():
    changedir=open(pathh + "icecast3.xml", "w")
    data=open("/etc/icecast2/icecast.xml").read()
    changedir.write(re.sub("hackme","%s" % x,data))
    changedir.close()
ices2()
def ices1():
    changedir1=open(pathh + "icecast2.xml", "w")
    data=open(pathh + "icecast3.xml").read()
    changedir1.write(re.sub("hackme", "%s" % x,data))
    changedir1.close()
    os.remove(pathh + "icecast3.xml")
ices1()
def ices():
    changedir2=open("/etc/icecast2/icecast.xml", "w")
    data=open(pathh + "icecast2.xml").read()
    changedir2.write(re.sub("hackme","%s" % x,data))
    changedir2.close()
    os.remove(pathh + "icecast2.xml")
ices()
def icecast():
    file1=open(pathh + "icecast2_1", "w")
    data=open("/etc/default/icecast2").read()
    file1.write(re.sub("ENABLE=false","ENABLE=true",data))
    file1.close()
icecast()
def icecast1():
    file3=open("/etc/default/icecast2", "w")
    data=open(pathh + "icecast2_1").read()
    file3.write(re.sub("","",data))
    file3.close()
    os.remove(pathh + "icecast2_1")
icecast1()
os.system("/etc/init.d/icecast2 start")
os.system ("cp -r /usr/local/etc/ices.conf.dist /usr/local/etc/ices.conf")
#here we change config ices
hostname=raw_input("enter your localhost or IP address server-> ")
def ch1():
    po=open (pathh + "ices1.conf","w")
    data=open("/usr/local/etc/ices.conf").read()
    po.write(re.sub("localhost","%s" %hostname, data))
    po.close()
ch1()
def ch2():
    po1=open (pathh + "ices2.conf","w")
    data=open(pathh + "ices1.conf").read()
    po1.write(re.sub("letmein","%s" %x, data))
    po1.close()
    os.remove(pathh + "ices1.conf")
ch2()
def ch3():
    po2=open ("/usr/local/etc/ices.conf","w")
    data=open(pathh + "ices2.conf").read()
    po2.write(re.sub("http://localhost/","http://%s/" %hostname, data))
    po2.close()
    os.remove(pathh + "ices2.conf")
ch3()
#now we crate folder where we can download mp3 files
os.system("mkdir /home/radio")
sd=raw_input("U must download mp3 files in /home/radio directory, and after that choose Y and press enter-> ")
if sd in ['y','Y']:
    os.system("cd /home/radio/"+ " && ls > playlist.txt")
else:
    print "try it again later"
os.system ("ices -c /usr/local/etc/ices.conf")
print "Now try enter this url in browser http://localhost:8000/radio"

пятница, 9 марта 2012 г.

Squid + Sams script on Debian squeeze i686-32bit

    И так второй вариант установить Sams+ Squid на 32 рязрядную ОС Debian Squeeze
Тут я использовал пакеты sams для 5 дистрибутива Debian Lenny, но тут, вы можете качнуть и для squeeze дистрибутива но можно и вручную поставить. И так сам скрипт:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os, sys, re, MySQLdb
#Download libmysqlclient15off package
pathh=raw_input("Enter your home path expl: '/home/user/'-> ")
path_dir = pathh + "Downloads/"
url = "http://security.ubuntu.com/ubuntu/pool/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.51a-3ubuntu5.8_amd64.deb"
wget = "wget -c " + url + " -P " + path_dir
try:
    os.system(wget)
except:
    print "Connection Error"
    sys.exit()
#and now we are going to install it
os.system("dpkg -i " + path_dir + "http://security.ubuntu.com/ubuntu/pool/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.51a-3ubuntu5.8_i386.deb")
os.system("apt-get -f install ")
#install need packages
os.system("apt-get install apache2 -y && apt-get install apache2-mpm-prefork -y") 
os.system("apt-get install libapache2-mod-php5 -y && apt-get install php5-cgi -y")
os.system("apt-get install php5-common -y && apt-get install php5-mysql -y")  
os.system("apt-get install mysql-server -y && apt-get install mysql-client -y") 
os.system("apt-get install squid -y && apt-get install libpcre3 -y") 
os.system("apt-get install php5-gd -y && apt-get install libpcre3-dev -y") 
os.system("apt-get install libmysqlclient15-dev -y && apt-get install gcc -y") 
os.system("apt-get install make -y && apt-get install squidguard -y")
os.system("apt-get install python-mysqldb -y && apt-get install php5-ldap -y")

#We'll change some arguments in /etc/php5/apache2/php.ini
def cha1():
    o = open(path_dir + "php2.ini","w")
    data = open("/etc/php5/apache2/php.ini").read()
    o.write(re.sub("safe_mode = Off","safe_mode = On",data)  )
    o.close()
cha1()

def cha2():
    o1 = open(path_dir +"php1.ini","w")
    data1 = open(path_dir + "php2.ini").read()
    o1.write(re.sub('safe_mode_exec_dir =','safe_mode_exec_dir = "/usr/share/sams/bin"',data1)  )
    o1.close()
    os.remove(path_dir + "php2.ini")
cha2()

def cha3():
    o2 = open("/etc/php5/apache2/php.ini","w")
    data2 = open(path_dir + "php1.ini").read()
    o2.write(re.sub("disable_functions =", 'disable_functions = "chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec"',data2))
    o2.close()
    os.remove(path_dir + "php1.ini")
cha3()

#Let's download and install sams for Debian SQUEEZE
link1="http://nixdev.net/release/sams/debian/lenny/sams-doc_1.0.5_all.deb"
link2="http://nixdev.net/release/sams/debian/lenny/sams-web_1.0.5_all.deb"
link3="http://nixdev.net/release/sams/debian/lenny/sams_1.0.5_i386.deb"
wget1= ("wget " + link1 + " -P " + path_dir)
wget2= ("wget " + link2 + " -P " + path_dir)
wget3= ("wget " + link3 + " -P " + path_dir)
try:
    os.system(wget1 + wget2 + wget3)
except:
    print "Connection error or can't connect to server"
    sys.exit()

os.system("dpkg -i " + path_dir + "sams_1.0.5_i386.deb")
os.system("dpkg -i " + path_dir + "sams_1.0.5_i386.deb")

def cha4():
    o4=open(path_dir + "sams","w")
    data4=open("/etc/init.d/sams").read()
    o4.write(re.sub("SAMS_ENABLE=false","SAMS_ENABLE=true",data4))
    o4.close()
cha4()

def cha5():
    o5=open("/etc/init.d/sams","w")
    data5=open(path_dir + "sams").read()
    o5.write(re.sub("","",data5))
    o5.close()
    os.remove(path_dir + "sams")
cha5()

os.system("dpkg -i " + path_dir + "sams-web_1.0.5_all.deb")
os.system("dpkg -i " + path_dir + "sams-doc_1.0.5_all.deb")
os.system("apt-get -f install ")

#connect to mysql bd
user=raw_input('Mysql username -> ')
password=raw_input('Mysql password -> ')
db=MySQLdb.Connect(host="localhost", user=user, passwd=password)
cursor=db.cursor()
pass_sams=raw_input("chose password for sams user -> ")
cursor.execute('GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "%s";' % pass_sams)
cursor.execute('GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "%s";' % pass_sams)
cursor.close()

#Here we change config sams
def sa():
    sd=open(path_dir + "sams1.conf", "w")
    data =open("/etc/sams.conf").read()
    sd.write(re.sub("MYSQLPASSWORD=samspasswd","MYSQLPASSWORD= %s" % pass_sams,data))
    sd.close()
sa()

def sa1():
    sd1=open("/etc/sams.conf", "w")
    data =open(path_dir + "sams1.conf").read()
    sd1.write(re.sub("","",data))
    sd1.close()
    os.remove(path_dir + "sams1.conf")
sa1()

os.system("cd /usr/share/sams/mysql " "&& mysql -u root -p < sams_db.sql")
os.system("cd /usr/share/sams/mysql " "&& mysql -u root -p < squid_db.sql")
#Here we change two configs webconfigtray.php and configtray.php
print """ Find this tag and comment all lines such like down do the same operation in 
webconfigtray.php and configtray.php

#function GetHostName()
#{
#  if(!($value=getenv('SERVER_NAME')))
#     {  $value="N.A."; }
#  return($value);
#}
"""
za=raw_input("If it's clear choose Y > ")
if za in ['y', 'Y']:
    os.system("nano /usr/share/sams/src/webconfigtray.php")
    os.system("nano /usr/share/sams/src/configtray.php")
else:
    print "you choose wrong way"

Поиск и замена определенной строки в файле на Python

      И так если вам необходимо в файле найти определенную строку и заменить ее на нужную и при этом резлуьтат сохранить в другой файл, то вот скрипт который поможет
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import re
output_file = open("output_place","w")
data = open("original_file").read()
output_file.write( re.sub("need_string","replace_string",data)  )
output_file.close()

среда, 7 марта 2012 г.

Squid + Sams script on Debian squeeze amd64

И так скрипт на тему установка Sams+Squid на debian squeeze, где использовал пакеты sams debian lenny не забываем запускать скрипт от имени root. Также есть и ручной вариант установки
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os, sys, re
#Download libmysqlclient15off package
pathh=raw_input("Enter your home path expl: '/home/user/'-> ")
path_dir = pathh + "Downloads/"
url = "http://security.ubuntu.com/ubuntu/pool/main/m/mysql-dfsg-5.0/libmysqlclient15off_5.0.51a-3ubuntu5.8_amd64.deb"
wget = "wget -c " + url + " -P " + path_dir
try:
    os.system(wget)
except:
    print "Connection Error"
    sys.exit()
#and now we are going to install it
os.system("dpkg -i " + path_dir + "libmysqlclient15off_5.0.51a-3ubuntu5.8_amd64.deb")
os.system("apt-get -f install ")
#install need packages
os.system("apt-get install apache2 -y && apt-get install apache2-mpm-prefork -y") 
os.system("apt-get install libapache2-mod-php5 -y && apt-get install php5-cgi -y") 
os.system("apt-get install php5-common -y && apt-get install php5-mysql -y")  
os.system("apt-get install mysql-server -y && apt-get install mysql-client -y") 
os.system("apt-get install squid -y && apt-get install libpcre3 -y") 
os.system("apt-get install php5-gd -y && apt-get install libpcre3-dev -y") 
os.system("apt-get install libmysqlclient15-dev -y && apt-get install gcc -y") 
os.system("apt-get install make -y && apt-get install squidguard -y")
os.system("apt-get install python-mysqldb -y && apt-get install php5-ldap -y")
os.system("apt-get install python-mysqldb -y")
#We'll change some arguments in /etc/php5/apache2/php.ini
def cha1():
    o = open(path_dir + "php2.ini","w")
    data = open("/etc/php5/apache2/php.ini").read()
    o.write(re.sub("safe_mode = Off","safe_mode = On",data)  )
    o.close()
cha1()

def cha2():
    o1 = open(path_dir +"php1.ini","w")
    data1 = open(path_dir + "php2.ini").read()
    o1.write(re.sub('safe_mode_exec_dir =','safe_mode_exec_dir = "/usr/share/sams/bin"',data1)  )
    o1.close()
    os.remove(path_dir + "php2.ini")
cha2()

def cha3():
    o2 = open("/etc/php5/apache2/php.ini","w")
    data2 = open(path_dir + "php1.ini").read()
    o2.write(re.sub("disable_functions =", 'disable_functions = "chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec"',data2))
    o2.close()
    os.remove(path_dir + "php1.ini")
cha3()

#Let's download and install sams for Debian SQUEEZE
link1="http://nixdev.net/release/sams/debian/lenny/sams-doc_1.0.5_all.deb"
link2="http://nixdev.net/release/sams/debian/lenny/sams-web_1.0.5_all.deb"
link3="http://nixdev.net/release/sams/debian/lenny/sams_1.0.5_amd64.deb"
wget1= ("wget " + link1 + " -P " + path_dir)
wget2= ("wget " + link2 + " -P " + path_dir)
wget3= ("wget " + link3 + " -P " + path_dir)
try:
    os.system(wget1 + wget2 + wget3)
except:
    print "Connection error or can't connect to server"
    sys.exit()

os.system("dpkg -i " + path_dir + "sams_1.0.5_amd64.deb")
os.system("dpkg -i " + path_dir + "sams_1.0.5_amd64.deb")

def cha4():
    o4=open(path_dir + "sams,"w")
    data4=open("/etc/init.d/sams").read()
    o4.write(re.sub("SAMS_ENABLE=false","SAMS_ENABLE=true",data4))
    o4.close()
cha4()


def cha5():
    o5=open("/etc/init.d/sams","w")
    data5=open(path_dir + "sams").read()
    o5.write(re.sub("","",data5))
    o5.close()
    os.remove(path_dir + "sams")
cha5()

os.system("dpkg -i " + path_dir + "sams-web_1.0.5_all.deb")
os.system("dpkg -i " + path_dir + "sams-doc_1.0.5_all.deb")
os.system("apt-get -f install ")


#connect to mysql bd
user=raw_input('Mysql username -> ')
password=raw_input('Mysql password -> ')
db=MySQLdb.Connect(host="localhost", user=user, passwd=password)
cursor=db.cursor()
pass_sams=raw_input("chose password for sams user -> ")
cursor.execute('GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "%s";' % pass_sams)
cursor.execute('GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "%s";' % pass_sams)
cursor.close()

#Here we change config sams
def sa():
    sd=open(path_dir + "sams1.conf", "w")
    data =open("/etc/sams.conf").read()
    sd.write(re.sub("MYSQLPASSWORD=samspasswd","MYSQLPASSWORD= %s" % pass_sams,data))
    sd.close()
sa()

def sa1():
    sd1=open("/etc/sams.conf", "w")
    data =open(path_dir + "sams1.conf").read()
    sd1.write(re.sub("","",data))
    sd1.close()
    os.remove(path_dir + "sams1.conf")
sa1()

os.system("cd /usr/share/sams/mysql " "&& mysql -u root -p < sams_db.sql")
os.system("cd /usr/share/sams/mysql " "&& mysql -u root -p < squid_db.sql")

#Here we change two configs webconfigtray.php and configtray.php
print """ Find this tag and comment all lines such like down do the same operation in
webconfigtray.php and configtray.php

#function GetHostName()
#{
#  if(!($value=getenv('SERVER_NAME')))
#     {  $value="N.A."; }
#  return($value);
#}
"""
za=raw_input("If it's clear choose Y > ")
if za in ['y', 'Y']:
    os.system("nano /usr/share/sams/src/webconfigtray.php")
    os.system("nano /usr/share/sams/src/configtray.php")
else:
    print "you choose wrong way"

Conky скрипт для Debian squeeze

И так по причине того, что мне часто приходится перевешивать ОС по определенным причинам, то я активно использую conky утилиту, ибо она мне помогает контроливароть свой узел. Недавно начав изучать питон решил упростить себе задачу и так представляю вам третье творение. Не забываем запустить скрипт от имени root
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import sys

os.system("apt-get install python-statgrab && apt-get install hddtemp && apt-get install curl  && apt-get install lm-sensors && apt-get install conky-all")
os.system("chmod u+s /usr/sbin/hddtemp")
os.system("sensors-detect")

#download file conky
pathh=raw_input("Enter your home path expl: '/home/user/'-> ")
path_dir = pathh + "Downloads"
url='http://www.deviantart.com/download/244793180/conky_colors_by_helmuthdu-d41qrmk.zip'
wget= "wget -c " + url + " -P " + path_dir
try:
    os.system(wget)
except:
    print "Connection Error"
    sys.exit()
    
#unzip file
os.system("apt-get install unzip")
pa="conky_colors_by_helmuthdu-d41qrmk.zip"
unziping = "unzip " + path_dir + pa + " -d "+ path_dir
os.system(unziping)

#install
os.system("apt-get install make")
os.system("apt-get install gcc")
putt=path_dir + "conky_colors/"
os.system("make -C " + putt)
os.system("make install -C "+ putt)
os.system(putt + """conky-colors --lang=ru --theme=brave --cpu=2 --cputemp --swap --updates --proc=5 --clock=modern --calendar --hd=meerkat --hdtemp1=/dev/sda --network --gnome""")
os.system("fc-cache -v -f")

#copy to home in Debian
os.system("cp -r /root/.conkycolors/ %s" % pathh)

#rebooting PC
doo=raw_input("Do U want reboot your PC now? Y or N ->")
if doo in ['Y','y']:
    os.system("reboot")
else:
    print "U choose N=No or pressed another button"
После этого добавляем в автозагрузку путь в System-Preferences-Start Application
conky -c /home/nosensus/.conkycolors/conkyrc

понедельник, 5 марта 2012 г.

Скрипт установки LAMP сервера на Debian squeeze

И так мне иногда приходиться очень даже часто переустанавливать Linux, и постоянная настройка сервера LAMP отнимает время. Поэтому решил написать скрипт на питоне довольно примитивный, но рабочий. Решил поделиться может кому в хозяйстве пригодиться название скрипта у меня lamp.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
from os.path import isfile
os.system("clear")
y=isfile("/usr/sbin/apache2" and "/usr/bin/php5" and "/usr/bin/mysql")
if y == 1:
    print "Every packages installed yet"
    
elif y==0:
    x = raw_input("Choose Y or N > ")
    if x in ['Y','y']:
        os.system("apt-get update")
        os.system("apt-get install mysql-server -y && apt-get install mysql-client -y")
        os.system("apt-get install apache2 -y && apt-get install php5 -y")
        os.system("apt-get install libapache2-mod-php5 -y && apt-get install php5-xsl -y && apt-get install php5-json -y")
        os.system("apt-get install php5-mysql -y && apt-get install php5-curl -y && apt-get install php5-gd -y")
        os.system("apt-get install php5-idn -y && apt-get install php-pear -y && apt-get install php5-imagick -y")
        os.system("apt-get install php5-imap -y && apt-get install php5-mcrypt -y  && apt-get install php5-memcache -y")
        os.system("apt-get install php5-mhash -y && apt-get install php5-ming -y && apt-get install php5-ps -y")
        os.system("apt-get install php5-pspell -y &&  apt-get install php5-recode -y && apt-get install php5-snmp -y")
        os.system("apt-get install php5-sqlite -y && apt-get install php5-tidy -y && apt-get install php5-xmlrpc -y")
        os.system("apt-get install phpmyadmin -y")
        os.system("/etc/init.d/apache2 restart")
        print "Well done my congratulations"
    else:
        print "something wrong or you put N=NO"
else:        
    print "some of packages not installed, you must install it"

воскресенье, 4 марта 2012 г.

Диагностика установленного оборудования на Debian

     Как посмотреть какое железо присутсвует на узле либо какое уже установленно. Легко и просто:
#apt-get install hardinfo
запуск
#hardinfo
второй вариант диагностики
#apt-get install lshw
запуск
#lshw

Wi-Fi на Debian squeeze

      И так повесил Debian squeeze на ноутбук Acer aspire 5745PG, но проблема с вай файем сразу же дало о себе знать(Broadcom Wi-Fi). И так спросил у гугла, как поставить вай фай и он мне дал ответ. Начнем.
#apt-get install network-manager-gnome
Далее в репозитарий пропишем зеркало
#nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian squeeze main contrib non-free
#apt-get update
#apt-get install firmware-iwlwifi wireless-tools
Загрузим модуль
# modprobe iwlagn
Проверим интерфейс
# iwconfig
Далее установим программу для конфигурации подключений
# apt-get install wicd
запустим демона
# /etc/init.d/wicd start
запустим оболочку
#wicd-client -n


Article

      И так есть другой вариант установки Wi-Fi
для начала проссмотрим наличие вай фай адаптеров
#lspci
....
03:00.0 Network controller: Broadcom Corporation BCM43225 802.11b/g/n (rev 01)
....
Далее установим
#apt-get install xserver-xorg-video-all
Далее ребутаем иксы
#apt-get install mesa-utils
#apt-get install b43-fwcutter
 Теперь запросим список
#iwconfig

lo        no wireless extensions.
eth0      no wireless extensions.
pan0      no wireless extensions.
wlan0     IEEE 802.11bgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=19 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
Поднимем сам интерфейс вай фай
#ifconfig wlan0 up
Также есть альтернативная утилита для поиска вай фай точек
#apt-get install wifi-radar

Полезные ссылки 1  и  2

пятница, 2 марта 2012 г.

Автоматическое монтирование флешек на Debian 6/squeeze

       И так долгое время мучался с монтированием носителей на Debian.  Гугл как всегда помог в решении данной проблемы.
Установим сначала это
#apt-get install usbmount
      А далее, а далее ничего все втыкайте флешку и смотрите свой результат. Ну для самых капризных пользователей и для тех кто любит, чтобы все было по их капризу, заходим в конфиг и правим как нравиться путь таков:
#nano /etc/usbmount/usbmount.conf
      Но к сожалению кроме чтения мы ничего не сможем сделать(а нам же еще ее надо уметь размонтировать).
И так есть вариант дать права root пользователю для этого надо установить sudo
#apt-get install sudo
После надо добавить пользователя в sudoers
#nano /etc/sudoers
и под рутом добавить строчку:
{user} ALL=(ALL) ALL


          Второй способ
      Переходим в каталог где установлен наш usbmount
#cd /etc
#ls -l
      Выдаст результат
drwxr-xr-x  4 root root  4096 Mar  2 11:03 usbmount   # как видно обладатель root и группа тоже root
      Меняем правообладателя и саму группу(все далется под root'ом)
#chown -R user:user usbmount/
#ls -l
drwxr-xr-x  4 user user  4096 Mar  2 11:03 usbmount


    Теперь можно размонтировать кликнув по ярлыку правой кнопкой мышки
Но записать мы ничего на носитель не можем.
Для этого откроем сам конфиг и внесем изменения


#nano /etc/usbmount/usbmount.conf
# Mount options: Options passed to the mount command with the -o flag.
# See the warning above regarding removing "sync" from the options.
MOUNTOPTIONS="-o defaults"   


# For example, "-fstype=vfat,gid=floppy,dmask=0007,fmask=0117" would add
# the options "gid=floppy,dmask=0007,fmask=0117" when a vfat filesystem
# is mounted.
FS_MOUNTOPTIONS="-o defaults"


В данном случае -o defaults это опция монтирования по умолчанию, т.е монтируются все свойства запись, чтения и  т.д


     Также есть ТРЕТИЙ вариант который предложил ниже James Cox    изменим теже функции так:


MOUNTOPTIONS="relatime,noexec,rw"
FS_MOUNTOPTIONS="defaults"


Ну и теперь семь бед один резет, ребутаемся господа.
__________________________________________________________________
      P.s. для тех кто ставил с флешки линукс будет проблема такая:

Error mounting: mount exited with exit code 1: helper failed with:
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
     Также при загрузке системы  в начеле выйдет строка

[    2.510700] PM: Error -22 checking image file
[    5.080230] nForce2_smbus 0000:00:01.1: Error probing SMB1.


     Далее зайдем в /etc/fstab/ содержимое таково


# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda2 during installation
UUID=fbc4cd30-5b4f-4d93-98d5-a8fc85785e27 /               ext4    errors=remount-ro 0       1
# /home was on /dev/sda3 during installation
UUID=8a78b05b-44f2-4ee4-9995-963fea0f94af /home           ext4    defaults        0       2
# swap was on /dev/sda4 during installation
UUID=beb97b11-1e36-4e19-9cc9-fac118115146 none            swap    sw              0       0
/dev/sdb1       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/scd0       /media/cdrom1   udf,iso9660 user,noauto     0       0
     Удалите эти две строки к черту и сохраните. Данный глюк возникает непосредственно после установки линукса с флешки.


P.P.S. для создания загрузочной флешки использовал uNetBootIn
Спасибо за это решение Анониму))) и человеку который отписал решение данной проблемы тут

четверг, 1 марта 2012 г.

DDos script on Python

        И так начал изучать питон и как всегда первый скрипт на целен на деструктивный метод. Ниже приведен скрипт на захламления канала до определенного узла, подопытным кроликом был локальный узел. Выкладываю скрипт:

#!/usr/bin/env python
import commands
ip_get = raw_input("enter Ip address> ")
c = commands.getoutput("/bin/ping -A -f -l1 -s 65500 %s" %ip_get)
print c 
      либо еще короче, но первый вариант правильнее, а второй короче

#!/usr/bin/env python
import commands
ip_get = raw_input("enter Ip address> ")
commands.getoutput("/bin/ping -A -f -l1 -s 65500 %s" %ip_get)

Первый скрипт удался, правда чтобы его сократить до таких маленьких строк исписал наверное строк 60 пока подобрал то, что правильнее и лучше