﻿define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/dev/head &#187; rdesktop</title>
	<atom:link href="http://devhead.ru/cat/rdesktop/feed" rel="self" type="application/rss+xml" />
	<link>http://devhead.ru</link>
	<description>Статьи и видео уроки</description>
	<lastBuildDate>Mon, 30 Jan 2017 11:12:34 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.37</generator>
	<item>
		<title>RDP терминал на Linux</title>
		<link>http://devhead.ru/read/rdp-terminal-na-linux</link>
		<comments>http://devhead.ru/read/rdp-terminal-na-linux#comments</comments>
		<pubDate>Mon, 14 Nov 2011 04:52:16 +0000</pubDate>
		<dc:creator><![CDATA[Аноним]]></dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rdesktop]]></category>
		<category><![CDATA[rdp]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://devhead.ru/read/rdp-terminal-na-linux/</guid>
		<description><![CDATA[Потребовалось создать дистрибутив для внутреннего пользования на предприятии, который работает как терминал, подключаясь к rdp сессии  Маздайного сервака. Чтобы не искушать судьбу на разные "извращения" и  красноглазие, я решил воспользоваться SUSE Studio. Плюс этого сервиса, что упращается сборка дистрибутива с нужными пакетами, оформлением и прочими утехами. С этой задачей я справился очень быстро, но вот [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Потребовалось создать дистрибутив для внутреннего пользования на предприятии, который работает как терминал, подключаясь к rdp сессии  Маздайного сервака. Чтобы не искушать судьбу на разные "извращения" и  красноглазие, я решил воспользоваться <a href="http://susestudio.com">SUSE Studio</a>. Плюс этого сервиса, что упращается сборка дистрибутива с нужными пакетами, оформлением и прочими утехами. С этой задачей я справился очень быстро, но вот далее дошло до программы которая будет подключаться к терминалу. Естественно выбор пал на rdesktop, но вот незадача в том, что нужно написать соответствующий скрипт который будет выкачивать из сети конфиги, парсить их в  соответствии с IP-адресом и подключаться куда нужно и с определёнными параметрами. Ещё необходимо, чтобы скрипт реагировал на свои в локальной сити или при недоступности узла. Можно было использовать bash, но реализовывать нормальный парсинг на нём, это не айс и я решил использовать python. <span id="more-1346"></span><strong></strong> <strong>terminal.py </strong></p>
<pre class="brush: python">#!/usr/bin/python
#-*-coding:utf8-*-
#New Terminal programm for  Terminal OS.
import threading
import time
import os
import ConfigParser
import socket
import fcntl
import struct

ip="local.location.ru"
user="terminal"

config = ConfigParser.ConfigParser()
config.read('/home/'+user+'/terminal.cfg')
pingcount=(config.get('general', 'pingcount'))

download_mirror_config="http://local.location.ru/terminal.cfg"
download_config="http://192.168.2.7/terminal.cfg"

class PingProcess(threading.Thread):
    def ping(self):
        ping = os.system("ping -c "+pingcount+" "+ip)
        return ping

    def run(self):
        while True:
            if self.ping() == 0:
                os.system("killall qiv")
                dwld=os.system("wget -N --timeout 3 --tries 1 "+download_config+" -P /home/"+user+"/")
                if dwld != 0:
                    os.system("wget -N --timeout 3 --tries 1 "+download_mirror_config+" -P /home/"+user+"/")
                time.sleep(60)

            else:
                os.system("killall rdesktop")
                time.sleep(60)

class StartProcess(threading.Thread):
    def getIP(self,ifname='eth0'):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            ipaddr = socket.inet_ntoa(fcntl.ioctl(
            s.fileno(),
            0x8915,
            struct.pack('256s', ifname[:15])
            )[20:24])
            return ipaddr
        except:
            return "127.0.0.1"
    def run(self):
        once_commands=(config.get(self.getIP(), 'once_commands'))
        os.system(once_commands)
        while True:
            commands=(config.get(self.getIP(), 'commands'))
            os.system(commands)
            os.system("qiv -f /home/"+user+"/warrning.png")

ping = PingProcess()
ping.start()
process = StartProcess()
process.start()</pre>
<p><strong>terminal.cfg</strong></p>
<pre class="brush: xhtml">[general]
pingcount=1

[127.0.0.1]
once_commands=''
commands=''

[192.168.27.128]
once_commands=''
commands=rdesktop -f -u username -p password -z -r comport:COM1=/dev/ttyS0 192.168.7.9</pre>
<p><strong>Программа для запуска script.sh</strong></p>
<pre class="brush: bash">#!/bin/bash
wget -N --timeout 3 --tries 1 http://192.168.2.7/terminal.cfg
DWLD=$?
if [ "$DWLD" -ne "0" ]
then
wget -N --timeout 3 --tries 1 http://local.location.ru/terminal.cfg
else
terminal.py
fi</pre>
]]></content:encoded>
			<wfw:commentRss>http://devhead.ru/read/rdp-terminal-na-linux/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->