﻿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; terminal</title>
	<atom:link href="http://devhead.ru/cat/terminal/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>
		<item>
		<title>Небольшое введение в screen</title>
		<link>http://devhead.ru/read/nebolshoe-vvedenie-v-screen</link>
		<comments>http://devhead.ru/read/nebolshoe-vvedenie-v-screen#comments</comments>
		<pubDate>Wed, 03 Nov 2010 14:55:47 +0000</pubDate>
		<dc:creator><![CDATA[ignusius]]></dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://devhead.ru/read/nebolshoe-vvedenie-v-screen/</guid>
		<description><![CDATA[Screen - это полноэкранный оконный менеджер, который мультиплексирует физический терминал между несколькими процессами (обычно, интерактивными оболочками). Каждый терминал обладает функциональностью терминала DEC VT100 и некоторыми управляющими функциями из стандартов ISO 6429 (ECMA 49, ANSI X3.64) и ISO 2022 (вставка/удаление строки и поддержка множеств символов). Для каждого виртуального терминала есть буфер истории и механизм обмена, позволяющий [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Screen -</strong> это полноэкранный оконный менеджер, который мультиплексирует физический терминал  между несколькими процессами (обычно, интерактивными оболочками). Каждый терминал обладает функциональностью терминала DEC VT100 и некоторыми управляющими функциями из стандартов ISO 6429 (ECMA 49, ANSI X3.64)  и ISO 2022 (вставка/удаление строки и поддержка множеств символов). Для каждого виртуального терминала есть буфер истории и механизм обмена, позволяющий копировать текст между окнами.</p>
<p><span id="more-508"></span></p>
<h2><span class="editsection"> </span><span class="mw-headline">Ключи</span></h2>
<p>Простой запуск</p>
<blockquote>
<div>#screen</div>
</blockquote>
<p>Просмотр запущенных сессий</p>
<blockquote>
<div># screen -ls<br />There is a screen on:<br /> 9826.pts-2.bonanza-work-station (Detached)<br />1 Socket in /var/run/screen/S-andreyka.</div>
</blockquote>
<p>Присоединиться к отсоединенной сессии</p>
<blockquote>
<div># screen -r</div>
</blockquote>
<p>Присоединиться к первой подходящей отсоединенной сессии. Это может быть полезно в случае, если используется несколько сессий.</p>
<blockquote>
<div># screen -R</div>
</blockquote>
<p>Присоединиться к уже работающей сессии</p>
<blockquote>
<div># screen -x</div>
</blockquote>
<p>Удалить сломанную сессию</p>
<blockquote>
<div># screen -wipe</div>
</blockquote>
<p><a name=".D0.9A.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D1.8B_.D0.B4.D0.BB.D1.8F_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D0.BE.D0.BA.D0.BD.D0.B0.D0.BC.D0.B8" id=".D0.9A.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D1.8B_.D0.B4.D0.BB.D1.8F_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D0.BE.D0.BA.D0.BD.D0.B0.D0.BC.D0.B8"></a><!--more--></p>
<h2><span class="editsection"> </span><span class="mw-headline">Команды для управления окнами</span></h2>
<p><strong>Общие команды</strong></p>
<ul>
<li> Ctrl + a c - Создает новое окно и переключятся на него </li>
<li> Ctrl + a n - Переключиться на следующее по порядку окно </li>
<li> Ctrl + a k - Закрыть(убить) текущее окно(такого же эффекта можно достичь выполнив в закрываемом окне команду exit) </li>
<li> Ctrl + a w - Выводит список номеров и заголовков всех окон в нижней строчке экрана </li>
</ul>
<p><strong><i>Команды выбора конкретного окна</i></strong></p>
<ul>
<li> Ctrl + a " - Выводит интерактивный список номеров и заголовков всех окон, из которого можно выбрать окошко для переключения </li>
<li> Ctrl + a ' - Выводит диалог запроса номера или названия окна на которое нужно переключиться </li>
</ul>
<p><strong>Switch to window:</strong></p>
<ul>
<li> Ctrl + a № - Выбор окна по номеру. Например, команда &lt;Ctrl&gt; + &lt;a&gt; и 0 делает текущим окно с номером 0 </li>
</ul>
<p><strong>Команды отсоединения консольной сессии от терминала</strong></p>
<ul>
<li> Ctrl + a d - Отсоединиться от консольной сессии и оставить её запущенной в фоновом режиме. При этом Screen пишет:[detached] </li>
<li> Ctrl + a D D - Отсоединиться от консольной сессии, оставить её запущенной в фоновом режиме и выполнить logout </li>
</ul>
<p>p.s Пример выполнения команды создание нового окна: Нажимаем Ctrl, удерживая нажимаем a, отпускаем Ctrl + a и нажимаем c</p>
<p><a name=".D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8" id=".D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"></a></p>
<h2><span class="editsection"> </span><span class="mw-headline">Ссылки</span></h2>
<p><a href="http://rus-linux.net/lib.php?name=MyLDP/consol/screen.html" class="external text" title="http://rus-linux.net/lib.php?name=MyLDP/consol/screen.html" rel="nofollow">GNU Screen: введение для чайников</a> <br /> <a href="http://www.truediamon.ru/content/kak-nastroit-avtomaticheskij-zapusk-screen-pri-vhode-po-ssh" class="external free" title="http://www.truediamon.ru/content/kak-nastroit-avtomaticheskij-zapusk-screen-pri-vhode-po-ssh" rel="nofollow">http://www.truediamon.ru/content/kak-nastroit-avtomaticheskij-zapusk-screen-pri-vhode-po-ssh</a></p>
]]></content:encoded>
			<wfw:commentRss>http://devhead.ru/read/nebolshoe-vvedenie-v-screen/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! -->