Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Скрипт - rdp станция  (Прочитано 490 раз)

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

Оффлайн Heretic_515

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
  • Dead end is just an excuse to break the wall!
    • Просмотр профиля
Скрипт - rdp станция
« : 11 Августа 2016, 12:59:39 »
Такая проблема. Есть настроенные и полностью работоспособные сервера (windows 8) Есть компьютеры - которые не поддерживают загрузку из сети, а часть из них подключается через впн. Нужно обеспечить доступ пользователям в терминал - обходя сам компьютер.(То есть сразу при старте - вход на сервер) На винде это сделать оч. легко - но Windows денег стоит, а баловаться не лицензией нельзя да и не хорошо. Пробую реализовать все под Ubuntu. Нужна помощь с написанием одного скрипта.
Что делает:
При старте машины скрипт ждет подключения опен впн (уже настроено), а затем подключается к сеансу. Если вдруг обрыв соединения - сеанс должен завершатся и оповещать о причине пользователя. Как только соединение будет восстановлено сеанс должен автоматически запустится снова.
У меня было вот так:
#!/bin/bash
#server_ping

last_state=1

while true; do
        ping -c 1 -W 2 100.100.100.100 > /dev/null
        state=$?
        if [ "$last_state" -ne "$state" ]; then
                if [ "$state" -eq "0" ]; then
DISPLAY=:0.0;
ADDRESS="100.100.100.100"

if ping -c 3 -s 10 -W 10 $ADDRESS
then
rdesktop 100.100.100.100 -z -P -f -u UserLogin -k common
else
notify-send "Сервер недоступен! - Проверьте интернет соединение"
fi
                else
                        notify-send "Сервер недоступен! - Проверьте интернет соединение. При восстановлении соединения сеанс будет запущен автоматически"
                fi
        fi
        last_state=$state
        sleep 10s
done
Здесь основная проблема что для подключения используется rdesktop, который при обрыве - просто виснет.
Сделал такой кусочек еще:
#!/bin/bash
ps ax | grep -v grep | grep rdesktop
if [ $? -ne 0 ]
        then
notify-send  "Сервер недоступен! - Проверьте интернет соединение. При восстановлении соединения сеанс будет запущен автоматически"
        else
pkill rdesktop
notify-send  "Возможно произошел обрыв соединения! При восстановлении соединения сеанс будет запущен автоматически" > /dev/null
fi
По отдельности все отрабатывает на ура. Но вот только соединил - перестало работать:
#!/bin/bash
#server_ping

last_state=1

while true; do
        ping -c 1 -W 2 100.100.100.100 > /dev/null
        state=$?
        if [ "$last_state" -ne "$state" ]; then
                if [ "$state" -eq "0" ]; then
DISPLAY=:0.0;
ADDRESS="100.100.100.100"

if ping -c 3 -s 10 -W 10 $ADDRESS
then
rdesktop 100.100.100.100 -z -P -f -u UserLogin -k common
else
notify-send "Сервер недоступен! - Проверьте интернет соединение"
fi
                else
                        ps ax | grep -v grep | grep rdesktop
if [ $? -ne 0 ]
        then
notify-send  "Сервер недоступен! - Проверьте интернет соединение. При восстановлении соединения сеанс будет запущен автоматически"
        else
pkill rdesktop
notify-send  "Возможно произошел обрыв соединения! При восстановлении соединения сеанс будет запущен автоматически" > /dev/null
fi
        fi
        last_state=$state
        sleep 10s
done

Помогите пожалуйста найти ошибки!

p.s
Если у кого есть идеи как это сделать лучше буду рад.
Dead end is just an excuse to break the wall!

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.