Автор Тема: Микро управлялки проектором и сквидом на tk/tcl :)  (Прочитано 1142 раз)

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 972
К компьютеру подключается проектор.
lxrandr оказался для пользователей слишком сложен :))))
Слепил "приложение" с 2мя кнопками - включить и выключить
#!/bin/sh
# слеш в конце делает 3ю строку коментом для wish (Simple windowing shell)\
exec wish "$0" "$@" # sh завершается запуская wish в качестве файла текущий скрипт ($0) остальные аргументы передаем в wish (argc - кол-во параметров, argv0 - имя скрипта, $argv - параметры), сам wish эту строку считает комментом

# My Monitor driver вер. 01

# НАСТРОЙКИ ПРОГРАММЫ ++++++++++++++++++++++++++++++++++++++++++++++++


# переменная - Включить проектор
global proectoron
set proectoron "/usr/bin/xrandr --output DVI-0 --mode 1024x768 --output VGA-0 --mode 1024x768"

# переменная - Выключить проектор
global proectoroff
set proectoroff "/usr/bin/xrandr --output DVI-0 --mode 1600x900 --output VGA-0 --off"

# переменная - цвет фона "grey" "blue" "grey95"
global bgc
set bgc "PapayaWhip"

# Конец НАСТРОЙКИ ПРОГРАММЫ ++++++++++++++++++++++++++++++++++++++++++

# ГЛАВНОЕ ОКНО
# самое верхнее окно получило название
wm title . "Projector driver"
# размеры и положение верхнего окна
wm geometry . 200x100+60+60
# у окна нельзя менять размер
wm resizable . false false

# создал область c названием main
frame .main -width 200 -height 100  -bg $bgc
# разместил ее в окне
pack .main

label .main.lab1 -text "Управление проектором" -fg black -bg $bgc
# поместил созданный текст на область
place .main.lab1 -x 10 -y 0

button .main.onon -text "   Включить Проектор   " -fg blue -bg $bgc -command pon
place .main.onon -x 10 -y 25

button .main.offoff -text "  Выключить Проектор  " -fg red -bg $bgc -command poff
place .main.offoff -x 10 -y 55


proc pon {} {
global proectoron

catch {exec sh -c $proectoron } out]
}

proc poff {} {
global proectoroff

catch {exec sh -c $proectoroff } out]
}
Для работы c конкретным проектором правятся переменные
proectoron
proectoroff


Ну я уже на форум скидывал когда-то старую версию, программка для управления сквидом
Ну чтоб учитель мог включить или выключить интренет классу
На компах школьников все через прокси - прописана как глобальный прокси
в файл /etc/sysconfig/network
HTTP_PROXY=http://ip-компа-учителя:порт-сквида
HTTPS_PROXY=https://ip-компа-учителя:порт-сквида
FTP_PROXY=ftp://ip-компа-учителя:порт-сквида
#!/bin/sh
# слеш в конце делает 3ю строку коментом для wish (Simple windowing shell)\
exec wish "$0" "$@" # sh завершается запуская wish в качестве файла текущий скрипт ($0) остальные аргументы передаем в wish (argc - кол-во параметров, argv0 - имя скрипта, $argv - параметры), сам wish эту строку считает комментом

# My SQUID driver вер. 01

# НАСТРОЙКИ ПРОГРАММЫ ++++++++++++++++++++++++++++++++++++++++++++++++


# переменная - название
global mydemon
set mydemon "/usr/sbin/squid"

# переменная - управление сквидом
global mydemonstr
set mydemonstr "/etc/init.d/squid"

# переменная - путь до лога сквида
global mylogpatch
set mylogpatch "/var/log/squid/access.log"

# переменная - цвет фона "grey" "blue" "grey95"
global bgc
set bgc "PapayaWhip"

# Конец НАСТРОЙКИ ПРОГРАММЫ ++++++++++++++++++++++++++++++++++++++++++


global stat
set stat "Сервер выключен..."

# ГЛАВНОЕ ОКНО
# самое верхнее окно получило название
wm title . "offline :: My SQUID driver"
# размеры и положение верхнего окна
wm geometry . 350x200+60+60
# у окна нельзя менять размер
wm resizable . false false

# создал область c названием main
frame .main -width 350 -height 200  -bg $bgc
# разместил ее в окне
pack .main

label .main.lab1 -text "Управление Прокси-сервером Squid" -fg black -bg $bgc
# поместил созданный текст на область
place .main.lab1 -x 10 -y 0

button .main.onon -text "  On Line !  " -fg blue -bg $bgc -font  -*-*-*-*-*-*-20-*-*-*-*-*-*-* -command bonline
place .main.onon -x 10 -y 25

button .main.offoff -text "  Off Line  " -fg red -bg $bgc -font  -*-*-*-*-*-*-20-*-*-*-*-*-*-* -command boffline
place .main.offoff -x 180 -y 25

label .main.lab2 -text "СТАТУС:" -fg black -bg $bgc
place .main.lab2 -x 10 -y 67

label .main.lab3 -text $stat -fg blue -bg $bgc -font -*-*-*-*-*-*-16-*-*-*-*-*-*-*
place .main.lab3 -x 70 -y 65

label .main.log -text "" -fg white -bg black -justify left -relief ridge -font  -*-*-*-*-*-*-8-*-*-*-*-*-*-*  -height 11 -width 65
place .main.log -x 10 -y 95

after 0 online

proc online {} {

global mydemon
global bgc
global stat
global mylogpatch

set temp [exec ps ax]
set temp [string first $mydemon $temp]
#tk_messageBox -icon info -type ok -title "Error :)" -parent . -message "$mydemon $temp"

if {$temp == "-1"} {
# выкл
if { $stat != "Сервер выключен..."} {
wm title . "offline :: My SQUID driver"
set stat "Сервер выключен..."
label .main.log2 -text "" -fg white -bg black -justify left -relief ridge -font  -*-*-*-*-*-*-8-*-*-*-*-*-*-*  -height 11 -width 65
place .main.log2 -x 10 -y 95
destroy .main.log
label .main.log -text "" -fg white -bg black -justify left -relief ridge -font  -*-*-*-*-*-*-8-*-*-*-*-*-*-*  -height 11 -width 65
place .main.log -x 10 -y 95
destroy .main.log2

label .main.lab4 -text $stat -fg blue -bg $bgc -font -*-*-*-*-*-*-16-*-*-*-*-*-*-*
place .main.lab4 -x 70 -y 65
destroy .main.lab3
label .main.lab3 -text $stat -fg blue -bg $bgc -font -*-*-*-*-*-*-16-*-*-*-*-*-*-*
place .main.lab3 -x 70 -y 65
destroy .main.lab4
}
} else {
# вкл
if { $stat != "Сервер работает..."} {
wm title . "On Line :: My SQUID driver"

set stat "Сервер работает..."

label .main.lab4 -text $stat -fg blue -bg $bgc -font -*-*-*-*-*-*-16-*-*-*-*-*-*-*
place .main.lab4 -x 70 -y 65
destroy .main.lab3
label .main.lab3 -text $stat -fg blue -bg $bgc -font -*-*-*-*-*-*-16-*-*-*-*-*-*-*
place .main.lab3 -x 70 -y 65
destroy .main.lab4
}
#log
set temp [ exec tail $mylogpatch ]

label .main.log2 -text $temp -fg white -bg black -justify left -relief ridge -font  -*-*-*-*-*-*-8-*-*-*-*-*-*-*  -height 11 -width 65
place .main.log2 -x 10 -y 95
destroy .main.log
label .main.log -text $temp -fg white -bg black -justify left -relief ridge -font  -*-*-*-*-*-*-8-*-*-*-*-*-*-*  -height 11 -width 65
place .main.log -x 10 -y 95
destroy .main.log2

}




    after 1000 online2

}

proc online2 {} {after 500 online}

proc boffline {} {
global mydemonstr
global bgc
global stat
set stat ""

catch {exec sudo $mydemonstr stop } out]
}

proc bonline {} {
global mydemonstr
global bgc
global stat
set stat ""

catch {exec sudo $mydemonstr start } out]
}
для учетки которая может управлять сквидом надо сделать запись в судо настройках
от рута вызываем
visudo
и добавляем
# User privilege specification
#root   ALL=(ALL) ALL
Учетная-запись-того-кто-управляет Имя-Компа = NOPASSWD: /etc/init.d/squid
Имя компа можно поглядеть по
hostname
я вписывал только часть имени - до точки.
Чтоб внести правки в vi нажимаем INSERT
Для выхода без сохранения жмем ESC
далее вписываем
:q!
Для выхода с сохранением жмем ESC
далее вписываем
:wq

Ну и соответственно на компе учителя должен стоять и быть настроен сквид

Оффлайн Nagohak

  • Завсегдатай
  • *
  • Сообщений: 306
К компьютеру подключается проектор.
lxrandr оказался для пользователей слишком сложен :))))
Слепил "приложение" с 2мя кнопками - включить и выключить
#!/bin/sh
# слеш в конце делает 3ю строку коментом для wish (Simple windowing shell)\
exec wish "$0" "$@" # sh завершается запуская wish в качестве файла текущий скрипт ($0) остальные аргументы передаем в wish (argc - кол-во параметров, argv0 - имя скрипта, $argv - параметры), сам wish эту строку считает комментом

# My Monitor driver вер. 01

# НАСТРОЙКИ ПРОГРАММЫ ++++++++++++++++++++++++++++++++++++++++++++++++


# переменная - Включить проектор
global proectoron
set proectoron "/usr/bin/xrandr --output DVI-0 --mode 1024x768 --output VGA-0 --mode 1024x768"

# переменная - Выключить проектор
global proectoroff
set proectoroff "/usr/bin/xrandr --output DVI-0 --mode 1600x900 --output VGA-0 --off"

# переменная - цвет фона "grey" "blue" "grey95"
global bgc
set bgc "PapayaWhip"

# Конец НАСТРОЙКИ ПРОГРАММЫ ++++++++++++++++++++++++++++++++++++++++++

# ГЛАВНОЕ ОКНО
# самое верхнее окно получило название
wm title . "Projector driver"
# размеры и положение верхнего окна
wm geometry . 200x100+60+60
# у окна нельзя менять размер
wm resizable . false false

# создал область c названием main
frame .main -width 200 -height 100  -bg $bgc
# разместил ее в окне
pack .main

label .main.lab1 -text "Управление проектором" -fg black -bg $bgc
# поместил созданный текст на область
place .main.lab1 -x 10 -y 0

button .main.onon -text "   Включить Проектор   " -fg blue -bg $bgc -command pon
place .main.onon -x 10 -y 25

button .main.offoff -text "  Выключить Проектор  " -fg red -bg $bgc -command poff
place .main.offoff -x 10 -y 55


proc pon {} {
global proectoron

catch {exec sh -c $proectoron } out]
}

proc poff {} {
global proectoroff

catch {exec sh -c $proectoroff } out]
}
Для работы c конкретным проектором правятся переменные
proectoron
proectoroff
спасибо с проектором пригодилось