Автор Тема: Как написать скрипт под интернет?  (Прочитано 11073 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 904

  • Эксперт пользователь
  • **
  • Сообщений: 1952
  • Per aspera ad astra
Исходные данные:
Спутниковый инет работает через sprint 3.3.1 на Mandriva 2008.1

Проблема в следующем:
Не могу никак автоматизировать процесс поднятия интерфейса, локации сигнала и запуска спринта, т.е. приходится открывать консоль в двух шеллах и под рутом вводить:

szap -n 1-x /root/.szap/channels.conf
Уже в другом шелле ввожу:

#!/bin/sh
#Пид Вашей подписки
PID=xxxx
#MAC адрес подписки
IPMAC=xx:xx:xx:xx:xx:xx
#Имя DVB-интерфейса
DVBNAME=dvb0_0
#IP подписки
IPDVB=xxx.xxx.xxx.xxx
#Старт DVB-интерфейса
dvbnet -p xxxx -a 0
ifconfig dvb0_0 xxx.xxx.xxx.xxx netmask 255.255.255.255 broadcast 255.255.255.255
ifconfig dvb0_0 hw ether xx:xx:xx:xx:xx:xx
/sbin/ip route add xxx.xxx.xxx.xxx dev dvb0_0
echo 1000000 > /proc/sys/net/core/rmem_max
echo -n 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter
#Запуск ускорителя Спринт
/home/Sprint3/sprint

Такой метод мне не очень удобен, а сделать иначе не получается - нет достаточных знаний.
Как можно ускорить запуск?
« Последнее редактирование: 12.07.2009, 02:22:20 от 904 »
Бог у всех один - провайдеры разные.

Оффлайн 904

  • Эксперт пользователь
  • **
  • Сообщений: 1952
  • Per aspera ad astra
Как написать скрипт под интернет?
« Ответ #1 : 12.07.2009, 11:11:04 »
И еще парочка вопросов:
Почему приходится сначала запускать спринт 2-й версии, а потом менять файлик спринта на 3-ю версию? Если этого не делать то по адресу 127.0.0.1:8080 невозможно видеть кнопочку "установить"
параметры. Кстати, проверил вчера инет через спринт 2 по UDP, а затем перешел на 3.3.1 TCP - разница под GPRS неимоверная. Едва работающий браузер через спринт 2, с легкостью открывал странички через спринт 3. Впрочем почему и сам файл sprint.xml тоже приходится портировать из среды Windows, т.к. сам он не создается?

Теперь, чтобы не плодить лишних тем - парочка не совсем сабжевых вопросов:
Есть в наличии дистр Mandriva 2009, однако ввиду наличия проблем с ним - остался на 2008.1.
Проблемы следующие: понравившийся мне Kaffein в 2009 версии который уже приходится доустанавливать самому - оказался без поддержки DVB-TV, да еще и на англицком. Хотя я и не собирался смотреть под линухом киношки меня очень порадовал новый медиацентр Elise. Но проблем оказалось куда больше: Mandriva 2009 это совершенно переработанная ось и даже не знаю в лучшую ли сторону? Так и не смог запустить KPPP и Bluetooth - несмотря на установленные либсы. В 2008.1 все работает на ура. Кто нибудь еще сталкивался с проблемами запуска KPPP под эту злосчастную Mandriva?
И еще вопросик:
В наличии имеется USB-модем Skylink Any Data E-100A, который мне не удается запустить под линукс. Поскольку привык к форточкам в консоль без особой надобности не лезу. Перелопатил кучу материала, но данный девайс упорно молчит. В центре установки оборудования модем числится, но как не как устройство с установленным драйвером. Если пытаться через KPPP создавать соединение по типу GPRS то процесс коннекта замирает на стадии "инициализации параметров". Поскольку для Skylink строка инициализации в Windows остается пустой - в линуксе это не работает. Нашел на одном из форумов, что для Skylink необходимо указать строку инициализации AT+CRM=1;&C0 - но ничего не меняется при добавлении строки. Та же вечная "инициализация". Попытка создать соединение GPRS/3G/Dial UP при помощи мастера сети вообще останавливается в первом окне где просят ввести PIN. Что я только не вводил туда (в т.ч. и PINы RUIM карты) - ничего не происходит.

И еще вопросик: какой полноценный дистрибутив линуха более менее понятен для начинающего? Предъявляемые требования: KDE, поддержка русского языка, простота насколько это возможно. Mandriva не предлагать!

Заранее благодарю!
Бог у всех один - провайдеры разные.

w2k3

  • Гость
Как написать скрипт под интернет?
« Ответ #2 : 13.07.2009, 14:35:02 »
904, не знаю как в Мандриве, но для автозагрузки в линуксах обычно скрипт кидается в одну из подпапок /etc/rc.d/rc.local. В Убунте  /etc/rc.local является файлом и именно в него вписывается вызов нужного скрипта.

w2k3

  • Гость
Как написать скрипт под интернет?
« Ответ #3 : 13.07.2009, 14:50:43 »
И еще вопросик: какой полноценный дистрибутив линуха более менее понятен для начинающего?
Предъявляемые требования: KDE, поддержка русского языка, простота насколько это возможно. Заранее благодарю!
Вот как раз ИМХО KDE работает гораздо более глючно, нежели Gnome. И пусть выглядит изящнее, проблем доставляет больше.

Из дистров кроме бубунты (Дебиан-подобная ветка) могу посоветовать Gentoo или Mint. Если идти по редхэтовской ветке, то Федора. Если будете выбирать из Убунту, то не рекомендую версию 8.10. Та же 8.04.2 работает намного стабильнее. А вот 9.04 в плане скорости по моим наблюдениям работает резвее всех прошлых. Из Федоры не понравилась 9-ая версия.

Хотя о вкусах не спорят...  :)

Оффлайн 904

  • Эксперт пользователь
  • **
  • Сообщений: 1952
  • Per aspera ad astra
Как написать скрипт под интернет?
« Ответ #4 : 13.07.2009, 17:01:38 »
Премного благодарен Вам w2k3 за содержательный ответ!

Меня вот что заботит: не получается создать сам исполняемый файл скрипта. Т.е. если я даже в консоль его содержимое копипастю, то дальше чем szap -n 1 -x дело не идет. Т.е. строки FE_HAS_LOCK идут, а вторая часть скрипта не выполняется. Приходится ее докопипастить в другом шелле. Расширение приписал своему "полускрипту" расширение *sh - в свойствах поставил галочку быть исполняемым, разрешил права на чтение и запись. Пробовал через консоль его запускать. Ничего!

Читаю всякие умные вещи по линухам, но еще больше запутался. А тут как назло еще и Kopete отвалился - по причине старой версии клиента, а в виде rpm найти не могу. Чувствую себя ламером полнешним. Вот и думаю сменить дистр - заодно и клиента обновлю.

Тут еще вдруг и szap перестал лочить сигнал ни с того ни с сего. Пришлось создать cannels.conf непосредственно в /root/.szap и запускать каманду без пути  szap -n 1 -x (до этого прекрасно работало в корне /etc).
Бог у всех один - провайдеры разные.

w2k3

  • Гость
Как написать скрипт под интернет?
« Ответ #5 : 13.07.2009, 20:47:44 »
904, давайте рассуждать логически. Если скрипт начинает выполняться в принципе - значит у файла скрипта права установлены правильно (атрибут выполнения выставлен). Это - раз. Теперь предлагаю вам расположить строку с лочкой сигнала (szap ....) не в начале скрипта, а как раз в конце его. Или можете попробовать завершить команду szap литерой &, которая отправит ее в фон. Правда в мандриве я не силен, душа сразу не легла и все. :)
А вот часть команд из этого скрипта можно выполнять только от имени суперпользователя (такие как dvbnet или команды по изменению системных переменных типа rp_filter). Команду szap можно выполнять от любого имени.

Цитировать
Тут еще вдруг и szap перестал лочить сигнал ни с того ни с сего. Пришлось создать cannels.conf непосредственно в /root/.szap и запускать каманду без пути  szap -n 1 -x (до этого прекрасно работало в корне /etc)
Может от имени другого пользователя стали выполнять? Тут логика такая. Если в командной строке szap указан явно файл с параметрами транспондера (ключ -с), то параметры должны браться именно из этого файла. Но тут может возникнуть загвоздка, когда пользователь, от имени которого выполняете этот самый szap может не иметь права на чтение файла с параметрами (например выполняете szap от имени обычного пользователя, а файл channals находится в /etc и не выставлен атрибут на чтение R для всех). Если файл параметров не указан в командной строке, то тогда ищется файл .szap в домашней папке пользователя, от имени которого выполняется szap.

Оффлайн 904

  • Эксперт пользователь
  • **
  • Сообщений: 1952
  • Per aspera ad astra
Как написать скрипт под интернет?
« Ответ #6 : 13.07.2009, 23:07:15 »
Логически говорите... Мда... Пытаюсь конечно, но пока не вижу логики ибо вообще не понимаю происходящего.

Итак, что касается проблем с szap: ничего не менялось, и пользователь тоже. Файл chаnnels.conf изначально был брошен в /etc где и пребывал до тех пор пока вдруг при наборе команды szap -n 1 -x /etc/channels.conf не появился вывод ключей команды. Глюк? Как то не склонен верить в существование потусторонних сил, и потому по старому виндовому способу решил переустановить ось - в результате папка /root/.szap  вообще отсутствовала (пришлось ее создать), а команда по прежнему не выполнялась при szap -n 1 -x /etc/channels.conf, несмотря на то, что kwrite /etc/channels.conf работает, а попытка szap с разными значениями ключей отваливалась даже с указаниями на невозможно прочитать строку и т.п. (пишу по памяти из винды). Впрочем это уже не важно - работает и ладно.

Про скрипт вообще отдельная история: он не запускается даже. Конечно же тут нужно мне освоить азы скриптоложества иначе так и буду открывать консоль, а потом копипастить туда содержимое скрипта. Сейчас как раз этим занимаюсь - почитываю линукс для чайников, и смотрю в сторону убунты. 

Спасибо Вам w2k3! Ума не приложу - как только люди управляются с линухом, да еще и держат его в качестве основной оси? Что ни прога то засада... Меня от RTFM уже трясет.
Бог у всех один - провайдеры разные.

w2k3

  • Гость
Как написать скрипт под интернет?
« Ответ #7 : 13.07.2009, 23:48:30 »
А вот неплохо бы посмотреть на текущий вид вашего скрипта и узнать, каким именно образом, от какого пользователя выполняете (желательно из консоли). Ну channels.conf наверно правильно составлен, иначе сигнал не лочился бы совсем.
Цитировать
Про скрипт вообще отдельная история: он не запускается даже.
А какие сообщения при этом выводятся? Может быть на самом деле не присвоен скрипту атрибут выполняемости?
Цитировать
#chmod +x myscript.sh
Значок "#" указывает на то, что выполнять команду нужно от имени суперпользователя, другие юзеры не имеют прав на выполнение этой команды.

Если что, может действительно стоит поставить другой дистрибутив? Если надумаете ставить Убунту, так есть варианты дистрибутивов в CD и DVD вариантах. Можно конечно поставить и с CD-дистра, но придется кое-что скачивать через Сеть из репозитариев (например при помощи винды) и устанавливать вручную.

Leviafan

  • Гость
Как написать скрипт под интернет?
« Ответ #8 : 14.07.2009, 00:03:45 »
А есть ли скрипт который показывал бы уровень сигнала со спутника?

w2k3

  • Гость
Как написать скрипт под интернет?
« Ответ #9 : 14.07.2009, 09:58:41 »
А есть ли скрипт который показывал бы уровень сигнала со спутника?
Есть такая фигня - femon называется. Только это не скрипт, а приложение.
А так в принципе раз szap выводит в консоль различные показатели сигнала, то при помощи grep можно оттуда выцепить любой параметр. Правда это будет естественно в попугаях szap, так что с виндовыми показаниями возможности сравнить пожалуй что не будет.

Leviafan

  • Гость
Как написать скрипт под интернет?
« Ответ #10 : 14.07.2009, 12:13:38 »
как я понимаю там сигнал в Hex следовательно его можно перевести в цифры, придется наверно мануалы по С++ читать, а читать то не охота :-(

w2k3

  • Гость
Как написать скрипт под интернет?
« Ответ #11 : 14.07.2009, 12:38:24 »
придется наверно мануалы по С++ читать, а читать то не охота :-(
А вы постарайтесь привыкнуть прямо в хексах соображать. :) Прикиньте, после двух месяцев такого мышления, приходите в магазин и просите продавов перевести цены в шестнадцатиричный вид, а то в десятиричном что-то не очень понятно. :)

Leviafan

  • Гость
Как написать скрипт под интернет?
« Ответ #12 : 14.07.2009, 13:18:52 »
w2k3 перевести не проблема hexdec("значение")
Хочется иметь нормальный интерфейс как на винде, что то на подобии оболочки для глобакса satcalc
Завтра кубунту 9,04 двд поставлю и буду мучить

Оффлайн Vitalik Slivkov

  • Свой
  • **
  • Сообщений: 63
Как написать скрипт под интернет?
« Ответ #13 : 16.07.2009, 02:51:11 »
[root@gw-home ~]# ls -l /dev/dvb/
итого 0
drwxr-xr-x 2 root root 120 Июл 14 14:35 adapter0
drwxr-xr-x 2 root root 120 Июл 14 14:35 adapter1
[root@gw-home ~]#

С интернетом /dev/dvb/adapter1/

[root@gw-home ~]# cat /etc/init.d/dvb
# Copyright (c) Vitaliy Pryadko
# 2005 ( http://www.opennet.ru/base/sys/skystar2_linux.txt.html )
#

DIR=/usr
# PID вашего провайдера
PID=XXXX
# Название интерфейса, через который производится получение пакетов
DEV_NAME=dvb1_0
# IP карты dvb. смотреть в мануале или в и-нете. Чаще всего ставится "от балды"
IP_ADDR=10.255.XX.XX
#IP_ADDR=10.248.XX.XXX
# Сетевая маска
NETMASK=255.255.255.0
# Адрес широковещательных пакетов
BCAST=255.255.255.255
# здесь пишем MAC dvb карты.
# Если фильтрация производится по IP-адресу,
# то последние четыре октета устанавливаются
# в шестнадцатеричное представление этого адреса:
#
MAC_ADDR=00:D0:D7:XX:XX:XX
#MAC_ADDR=00:D0:D7:XX:XX:XX
cd $DIR/bin

case "$1" in

                start)
            # настраиваем карту на приём данных со спутника
            # частота, скорость передачи данных, поляризация и так далее
            $DIR/bin/szap -a 1 -c /etc/channels.conf -n 1 -x
            # создаем сетевой интерфейс:
            $DIR/bin/dvbnet -a 1 -p $PID
            # присваеваем карте IP
            /sbin/ifconfig $DEV_NAME $IP_ADDR netmask ${NETMASK} broadcast ${BCAST}
            # присваеваем карте MAC-адрес
            /sbin/ifconfig $DEV_NAME hw ether $MAC_ADDR
                route add ${IP_ADDR} dev ${DEV_NAME}
            echo 0 > /proc/sys/net/ipv4/conf/dvb1_0/rp_filter
            ;;

        stop)
            /sbin/ifconfig $DEV_NAME down
            $DIR/bin/dvbnet -a 1 -d 0
            ;;

        restart)
            $0 stop
            $0 start
            ;;
        *)
            echo "Usage: `basename $0` start | stop | restart"
            ;;

        esac
[root@gw-home ~]#

[root@gw-home ~]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
sh /etc/init.d/dvb start
sh /etc/firewall/rc.firewall
cd /usr/local/sprint/
./sprint
[root@gw-home ~]#

[root@gw-home ~]# cat /usr/local/sprint/sprint.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
  <key text="Тута мой секретный ключ"/>
  <process logfile="/var/log/sprint.log" debuglevel="DEBUG" daemon="on" trunc="on"/>
  <services header_reject_level="2">
    <service id="0" name="HTTP proxy service" port="3128"/>
    <service id="1" name="HTTP proxy service" port="3129"/>
    <service id="2" name="HTTP-2 proxy service" port="3130"/>
    <service id="3" name="SOCKS-2 proxy service" port="3131"/>
  </services>
  <client remote_ip="80.81.208.82" proxy_ip="0.0.0.0/0" proxy_port="0" connection_type="udp" multicast_local_ip="10.255.ХХ.ХХХ" client_max_speed="4000" client_mtu="800" client_retry_timeout="2500000"/>
  <tap route_policy="0"/>
  <www www_port="8080" reload_time="10" lang="ru" http_dir="" www_login="" www_password_md5=""/>
  <allowed_netip>
    <netip netip="192.168.0.0/24"/>
  </allowed_netip>
  <www_allowed_netip>
    <netip netip="192.168.0.0/24"/>
  </www_allowed_netip>
</root>
[root@gw-home ~]#

Ключевое слово demon="on"

О работе сквида через спринт было написано не мало талмудов.

A-bang

  • Гость
Как написать скрипт под интернет?
« Ответ #14 : 16.07.2009, 21:49:18 »
Цитировать
Теперь предлагаю вам расположить строку с лочкой сигнала (szap ....) не в начале скрипта, а как раз в конце его. Или можете попробовать завершить команду szap литерой &, которая отправит ее в фон.
Если вы не заметили, то в скрипте есть еще одна команда#Запуск ускорителя Спринт
/home/Sprint3/sprint
Спринт не запустится, если карточка не залочена, значит и следующая команда не пойдет. А это как раз szap. Заколдованный круг получается.Как ни крути , без второй консоль не обойтись. Кстати если szap заканчивать литерой &, то процесс не уходит в фон почему то.Его вообще никакой командой остановить невозможно. Это я на своей системе многократно делал.
« Последнее редактирование: 16.07.2009, 21:53:44 от A-bang »