Windows терминал для linux сервера

Ламповый Linux-like терминал в Windows

Вступление (лирическое)

Для меня, автоматизатора-линуксоида, использвание Windows на основной рабочей станции первое время было просто болью и страданием. Но с этим я ничего поделать не мог: корпоративные стандарты и софт, кторый работает только на Windows. В попытке найти золотую середину, я прошёл три стадии. Сначала я только изредка переключался на винду по необходимости. Затем виртуалка на virtualbox-е с X-server-ом. После этого захотелось хоть чуть-чуть того консольного комфорта, который был на линуксе (я использовал Terminator в качестве основного терминала).

После яростного гугления и установки всех эмуляторов терминала под Windows, которые только удалось найти, оказалось, что нет ни одного хоть немного подходящего мне. А хотелось, чтобы вёл себя терминал максимально приближенно к линуксовым вариантам. Например, естественно нужны табы, сплит, выделение текста с прокруткой (когда нужно выделить больше чем один экран), копирование текста в буфер сразу при выделении и т.д.

В итоге я получил «комбайн» как на скриншоте ниже. О том, как это настроить, можно узнать, заглянув под кат.

До того, как получить результат, я даже всерьёз задумался о своём велосипеде (портирование, написание своего). Но лень и здравый смысл взяли свое…

В процессе поиска хорошего терминала, я наткнулся на хабра-топик: Альтернативный терминал для Windows. ConEmu — приложение действительно классное, но оно не для тех, кто долгое время использовал линукс-терминалы. Затем я наткнулся на Mintty (был установлен вместе с Cygwin). Программка отличная, ведёт себя максимально близко к таким терминалам как Gnome-terminal и Terminator, но нет табов.

Оказалось, что вышеупомянутый ConEmu умеет запускать GUI-приложения внутри своих табов! И тут искра надежды начала разгораться… Но хватит лирики, пора приступить к делу!

Установка нужных программ

Настройка

В ConEmu идём в Settings->Tasks и, нажимая плюсик, добавляем нужные таски как на скриншоте:

В нашем случае это:

Имя таска Команда
cygwin C:\Cygwin\bin\mintty.exe
ssh_local C:\Cygwin\bin\mintty.exe D:\Work\VMssh.bat
cmd cmd
powershell powershell

Осторожно! Адский CMD!

Вызывает скрипт старта виртуалки, VMNAME заменить на нужное.

Проверяет запущена ли виртуалка и если нет, то запускает её. Таким образом, мне не нужно помнить запущена ли виртуалка, запускать отдельно VirtualBox и делать дополнительные клики.

Немного «свистелок»

Общая рабочая папка (файлы доступны на винде и на виртуалке) — нужно настроить в VirualBox-e следующим образом:

Также нужно прописать в fstab на виртуалке, чтобы автоматиечски монтировалось при старте.

Заключение

В результате я получил терминал, в котором хоть как-то можно жить. Я ни в коем случае не претендую на исключительность этого решения, но надеюсь кому-то пригодится. Отдельный плюс такого решения — общий текстовый буфер и общие папки. Таким образом, работаем с линукс-виртуалкой так же как и с остальными табами в терминале.

Для тех, кому не нужны GUI-табы и кто использует tmux, есть статья моего коллеги примерно на ту же больную тему: habrahabr.ru/post/196128.

Особая благодарность хабраюзеру Maximus5 за отличный Windows терминал ConEmu!

Источник

Замена cервера терминалов Windows на Linux XRDP

Мысль о замене сервера терминалов с Windows на Linux пришла мне после расчета стоимости легального владения Windows Terminal обеспечивающим роль терминал сервера. Для реализации поставленной задачи – замены сервера терминалов на Linux, нужно было решить более суровую задачу – запуск и работу приложения написанного для работы в среде MS Access. Начитавшись отзывов в сети о возможности запуска MS Access в среде Linux, желание запустить в Linux — Access увеличилось, так как многие утверждали, что работа Access в Linux не возможна, в виду не стабильной работы продукта. Другие мастера без проблем запускали Access под Linux и, судя по всему у них это работало.

В моем случае на сервере терминалов под линукс должны были заработать следующие продукты:
MSAccess — приложение разработанное для нашей компании
ТрансМенеджер – есть такой софт, для работы с автоперевозками
MSOffice – Word и Excel, основной упор делался на Excel
1C Предприятие – конфигурации — 1СУправляющий, Предприятие и ЗУП
Принтер – печать
Что из этого получилось и почему в конечном итоге от решения я отказался, а настроенный сервер заморозил:
MSAccess очень долго добивался от него работоспособного состояния, в конечном итоге запустил в прослойке wine Access заработал. При работе проявлялись зависания и беспричинный низкий отклик приложения.
ТрансМенеджер эта программу целиком протестировать не успел, но при запуске и работе показывала очень не плохие результаты, думаю, если редактором кода пользоваться только из Windows получилось бы достойная рабочая среда
MSOffice – тут все завелось и работает с «полпинка», горя досталось когда файлы Exсel и Word отказывались после сохранения удалять свои временные файлы начинающиеся с

Читайте также:  Windows is using font

с общего диска примонтированного smb. Обход проблемы оказался простой нужно было добавить общий диск в список безопасных в настройках безопасности Excel.
1C Предприятие — так я после gnome перешел на xlde, при запуске 1С под xlde долго не мог найти окно авторизации, оказалось оно было просто перекрыто первым запускаемым окном 1С. При предоставлении работы с 1С в файловом режиме, другим клиентам на этом же сервере на файлы баз нужно выставить нужные биты прав доступа. Полностью решение протестировать не удалось, но в целом вполне работоспособно, по чувственному опыту работает хуже, чем в MS Windows.
Принтера — так как у меня все принтера hp, проблем с установкой и печатью не возникло, Cups очень понравился, работать даже приятнее чем из под windows.

Почему я отказался от решения — сервера терминалов на Linux?

Основная причина это нестабильная работа приложений, которые изначально задумывались для работы под Windows платформой. Нестабильная работа программ влияет на общую производительность труда сотрудника, выполненную за единицу времени, поскольку приложения работают медленнее то и решение в моем случае получится более затратным для бизнеса.

Ниже описаны шаги-заметки, которые я выполнял при выполнении работы по настройке сервера терминалов под Linux

Сервер терминалов под Linux

1. Устанавливаем debian 7 без Xorg (иксов), позже с debian ушел на Ubuntu так как поддержка дистрибутива LTS 5 лет
Размечаем диск вручную, максимальный размер отдаем под раздел home – где будут храниться папки и файлы программ для запуска пользователями используя wine
В пункте выбора компонентов для установки выбираем, стандартные утилиты, CUPS, SSH

2. По умолчанию в xenserver установка проходит с английским языком, то есть русские локали не устанавливаются
После загрузки устанавливаем XenServer tools
mount /dev/xvdd /mnt
cd /mnt/Linux/
./install.sh
reboot
Добавляем русскую локаль UTF8
dpkg-reconfigure locales
logout

Для Ubuntu
В /var/lib/locales/supported.d создать файлы ru, en и local
В файл local
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
ru_RU.CP1251 CP1251
en_US.CP1251 CP1251
В файл ru
ru_RU.UTF-8 UTF-8
ru_RU.CP1251 CP1251
В файл en
en_US.UTF-8 UTF-8
en_US.CP1251 CP1251
и выполняем команду
localegen
В файле /etc/default/locale (если его нет — создаем)
добавляем строку, в которой указываем кодировку по умолчанию (в данном случае — UTF8):
LANG=»ru_RU.UTF-8″
reboot
Настраиваем репозитарии
nano /apt/source.list
я добавил к тому что было строку
deb mirror.yandex.ru/debian wheezy main contrib non-free
Обновляем
aptget update
aptget upgrade
Устанавливаем mc, bootlogd, chkconfig, vsftpd
Настраиваем, отключаем ipv6
Запрещаем доступ по ssh root
nano /etc/ssh/sshd_config
Добавляем, исправляем
AddressFamily inet
PermitRootLogin no

меняем 0 на 1 в файле /proc/sys/net/ipv6/conf/all/disable_ipv6
отключаем поддержку ipv6 в sysctl
/etc/sysctl.d/
Для Ubuntu
# IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6=1
Блокируем загрузку модуля ядра
/etc/modprobe.d/blacklist.conf
blacklist /ipv6
/etc/modprobe.d/aliases.conf
alias net-pf-10 ipv6 off
net-pf-10 off
ipv6 off
Запрет привязывать ipv6 адрес к сокету
/etc/sysctl.d/bindv6only.conf
Net.ipv6.bindv6only=0
/proc/sys/net/ipv6/bindv6only
0
Закомментируем все записи относящиеся к ipv6 в файле
/etc/hosts
Отключаем в /etc/netconfig программу rpcbind поддержку ipv6
Отключаем ipv6 в avahi-daemon use-ipv6=no
chkconfig exim4 off
netstat -tunlp

3. Устанавливаем и настраиваем ntpd
apt-get install ntp
apt-get install ntpdate
dpkg-reconfigure tzdata

interface ignore ipv6
# Local clock (this is not the localhost address!)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# The source, where we are receiving the time from
server 192.168.21.5 iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
# ntpsigndsocket /var/lib/samba/ntp_signd/
# Access control
# Default restriction: Only allow querying time (incl. ms-sntp) from this machine
restrict default kod nomodify notrap nopeer mssntp
# Allow everything from localhost
restrict 127.0.0.1
# Allow that our time source can only provide time and do nothing else
restrict 192.168.21.5 mask 255.255.255.255 nomodify notrap nopeer noquery
# Allow lan mashines to me terminalmst
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer
Выполняем
ntpq –p

4. Настраиваем vsftpd
anonymous_enable=NO
local_enable=YES
write_enable=YES
#dirmessage_enable=YES

5. Устанавливаем графическйи сервер Иксы
aptitude install x-window-system

6. Устанавливаем и настраиваем сервер VNC, позже необходимость в этих шагах отпала в связи с работой xrdp, перехода на xlde
С целью проверки работоспособности иксов, так как реально дисплея в системе не существует, а xenserver его не эмулирует
apt-get install vnc4server
Запускаем сервер и задаем пароль для доступа по vnc
vncserver -geometry 1024×768 -depth 24
программа создаст необходимые файлы в домашней папке пользователя от имени которого будет запускаться vncserver
Создаст виртуальное устройство консоль :1
Убиваем процесс сервера
vncserver -kill :1
Правим файл xstartup в домашней папке пользователя
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#x-terminal-emulator -geometry 80×24+10+10 -ls -title «$VNCDESKTOP Desktop» &
x-window-manager &
Запускаем сервер
vncserver -geometry 1024×768 -depth 24
подключаемся TightVNC Viewer порт по умолчанию 5901
В итоге получаем серый экран и черный крестик, это говорит о том, что графический сервер работает
vncserver kill :1

Читайте также:  Линукс принтер очередь печати

7. Устанавливаем графическую оболочку, будем использовать gnome-core. Действия можно пропустить, на рабочем сервере использовал xlde.
apt-get install gnome-core
Для Ubuntu gnome-session-fallback или gnome-panel
делаем скрипт xinitrc исполняемым
chmod 755 /etc/X11/xinit/xinitrc
запускаем vnc
vncserver geometry 1024x768 —depth 24
и попадаем в Gnome

8. Удаляем из gnome пакеты программ использую аплет установка и удаление программ
Рабочая среда Gnome
CD/DVD burning application for GNOME (brasero)
Общие файлы для Brasero, приложения и библиотеки записи CD (brasero-common)
Configuration on screen keyboard with scanning mode (caribou)
Configuration on screen keyboard with scanning mode (caribou-antler)
vino
Gnome multi-protocol chat and call client (empathy)
Gnome multi-protocol chat and call client (empathy-common)
# Сервер базы данных evolution (evolution-data-server)
# Независимые от архитектуры файлы сервера данных Evolution
Gnome disk usage analyzer
Дисплейный менеджер нового поколения (gdm3)
# Gnome Panel applet for libgnomekdb (gkbd-capplet)
# поддержка Bluetooth в Gnome (gnome-bluetooth)
Contacts manager for Gnome (gnome-contacts)
Gnome media utilities (gnome-media)
Gnome Online Accounts (gnome-online-accounts)
Хранитель и блокировщик экрана для Gnome (gnome-screensaver)
Получение снимков экрана в среде Gnome (gnome-screenshot)
Встраивание поддержки Evolution и Pidgin в файловый менеджер Nautilus (nautilus-sendto)
Управление сетевыми подключениями интерфейс Gnome (network-manager-gnome)
Средства администрирования
База данных провайдеров мобильной связи (mobile-broadband-provider-info)
Мультимедиа
Звуковой сервер PulseAudio (pulseaudio)
PulseAudio backend for libcanberra (libcanberra-pulse)
X11 module for PulseAudio sound server (pulseaudio-module)
Наука
Калькулятор Gnome (gcalctool)
Русский iceweasel
apt-get install iceweasel-l10n-ru
Устанавливаем gnome-tweak-tool
aptget install pythonsoftwareproperties
aptget install softwarepropertiescommon
addaptrepository ppa:shimmerproject/ppa
aptget update
addaptrepository remove ppa:shimmerproject/ppa
aptget install gdebi
aptget install gtkthemeconfig
aptget install gconfeditor
apt-get install software-center
Удаляем через Synaptic Gnome — gnome power manager
apt-get remove software-center
apt-get autoremove

Dconf-editor меняем org-gnome-desktop-session gnome на gnome-fallback
Удаляем пакет для индексирования поиска
apt-get remove tracker-extract
Отключаем параметры индексирования (системные – параметры – поиск и индексирование)
Отключаем службы
Настройка запуска приложений
Notification Daemon
PulseAudio
Менеджер Bluetooth
Оповещение об обновлениях
Помощник монтирования
Сеть
Управление громкостью
Хранилище Tracker
После чего система будет кушать всего 134 Мб памяти
Отключаем автозагрузку демона Bluetooth
chkconfig bluetooth off
Меняем цвета панелей для этого
Создаем папку home/USER/.config/gtk-3.0
в ней файл settings.ini
содержимое файла:
[Settings]
gtk-icon-sizes = panel-menu=16,16:gtk-large-toolbar=16,16
создаем второй файл gtk.css
содержимое

PanelWidget,
PanelApplet,
PanelToplevel <
background-color: rgba(90,90,90,1);
background-image: none;
>
.gnome-panel-menu-bar,
PanelApplet > GtkMenuBar.menubar,
PanelApplet > GtkMenuBar.menubar.menuitem,
PanelMenuBar.menubar,
PanelMenuBar.menubar.menuitem <
background-color: rgba(90,90,90,1);
background-image: none;
>
PanelAppletFrame <
background-color: rgba(90,90,90,1);
background-image: none;
>

Понятно, что можно было руками поставить «легкий gnome»
Не актуально, так как рабочий вариант на xlde

9. Далее используя статью «forum.ubuntu.ru/index.php?topic=208235.0»
Создаем файл скрипт логон, в него можно будет заносить команды которые нужно выполнять при входе в систему
touch /etc/logon
chmod +x /etc/logon
добавляем в файл nano /etc/pam.d/common-session
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session optional pam_exec.so /etc/logon
session optional pam_mount.so
Создаем папку mkdir /net

10. Установка Wine
В debian 7 он исключительно 32 битный, кроме того версии 1.4. При этом стабильная версия на сайте wine 1.6. Есть только два пути использовать версию 1.4 i386 или компилировать 1.6
Конфигурируем на работу wine 32 бита
WINEARCH=win32 winecfg
dpkg —add-architecture i386
aptget update
Проверяем
aptitude search ^wine
Установка apt-get install wine:i386
Получем версию wine 1.4.1 2012 год
Проверяем что нет сломанных зависимостей
apt-get install –f
apt-get autoremove
apt-get check

11. Заходим под пользователем в debian(Ubuntu) и настраиваем wine
WINEARCH=win32 winecfg
wget winetricks.org/winetricks
chmod +x winetricks
Копируем папки с дистрибутивами на сервер по ftp, Access Runtime, Транс-Менеджер
создаем папку mkdir distr
выставляем права chmod 777 distr
Копируем в нее дистрибутивы программ
cd /distr/ARK
устанавливаем Access
wine start ACCESSRT.MSI
таким же образом устанавливаем sp3 к нему
Устанавливаем библиотеки
./winetricks wsh56 (тут я получил что не установлен cabextract)
aptget install cabextract
и повторяем
./winetricks wsh56
./winetricks jet40 (здесь я получил не удалось получить файловый дескриптор, указывающий на консоль) и просьбу установить mdac27
./winetricks mdac28 (ставится перед jet40)
./winetricks msxml3 (здесь я получил не удалось получить файловый дескриптор, указывающий на консоль, просьбой скачать пакет с Microsoft)
xmlsdk.msi (установился)
Скачиваем jet40
./winetricks riched20
./
winetricks vb5run
./winetricks vb6run (здесь скрипт закончился неудачей, библиотеки не были скопированы в system32)
./winetricks vcrun2005
./
vinetricks vcrun2008
./
winetricks native_oleaut32
Запускаем конфигуратор – winecfg
добавляем riched32 порядок загрузки драйвера меняем на сторонняя
riched20 порядок загрузки драйвера меняем на сторонняя
Запускаем wine regedit и импортируем файлы из папки distr ARK DataSource, ODBCINST, ACCESS (папка ACRT_2003, взял из Windows XP)
Заменяем библиотеки в
system32 на взятые из windows xp находятся в папке odbc (profile не надо)
Из той же папки копируем файл MSCOMCTL.OCX в папку System32
регистрируем элемент MSCOMCTL.OCX
wine cmd
cd /windows/system32
regsvr32.exe MSCOMCTL.OSX
Копируем дистрибутив ARK в Program Files
Настраиваем файл app.ini в папке ARK
TYPEA=2
USER=sa
Настраиваем odbc при необходимости, по факту не нужно, готовые записи из реестра XP в Wine уже предоставят необходимые настройки
wine odbcad32.exe
Устанавливаем шрифты
apt-get install ttf-mscorefonts-installer
Устанавливаем winbind
apt-get install winbind
Чтобы не получить ошибку с отсутствием /usr/lib/i386-linux-gnu/pkcs11.so
dpkg —add-architecture i386
apt-get download gnome-keyring:i386
dpkg -x gnome-keyring_3.4.1-5_i386.deb gnome-keyring
cp -r gnome-keyring/usr/lib/i386-linux-gnu/pkcs11/ /usr/lib/i386-linux-gnu/
Добавляем в /etc/hosts
192.168.0.11 SQL
192.168.0.11 sql.local.ru
Копируем шрифты из папки MSFonts в /usrshare/wine/fonts

Читайте также:  Проверка windows вирусы linux

12. Устанавливаем XRDP
apt-get install git
git clone github.com/scarygliders/X11RDP-o-Matic.git
cd X11RDP-o-Matic/
./X11rdp-o-matic.sh –justdoit
/etc/init.d/xrdp restart
netstat -lntp |grep 3389
update-rc.d xrdp defaults
update-rc.d xrdp enable
./RDPsesconfig.sh
Добавляем раскладку клавиатуры
в файл Xsession (etc/X11)
после set –e в самом начале прописываем
setxkbmap -layout «us,ru(winkeys)» -model «pc105» -option «grp:alt_shift_toggle,grp_led:scroll»
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
setxkbmap -layout «us,ru(winkeys)» -model «pc105» -option «grp:ctrl_shift_toggle,grp_led:scroll»
Меняем параметры /etc/xrdp
xrdp.ini
fork=no
/var/log/xrdp.log
blue=3a6ea5
ls_top_window_bg_color=3a6ea5
секции 3,4,5,6,7 закомментируем
nano sesman.ini
AllowRootLogin=0
X11DisplayOffset=10
MaxSessions=100
KillDisconnected=1 (время убить сессии time 60 сек)
LogFile=/var/log/xrdp-sesman.log
EnableSyslog=0
Для решения проблем с раскладкой при отключении от сессии
Создаем файл ruskey в /home/ubuntuhome/
setxkbmap -layout «ru(winkeys),us» -model «pc105» -option «grp:alt_shift_toggle»
делаем его исполняемым
chmod +x ruskey
cd .config/lxsession/LXDE
Добавляем в autostart
@/home/ubuntuadmin/ruskey (где @ будут выполнять команду при крахе)

13. Вводим в домен Samba4
aptitude install krb5-user
aptitude install samba
aptitude install winbind
aptitude install libpam-krb5 libpam-winbind libnss-winbind

krb5.conf
[libdefaults]
default_realm = LOCAL.RU
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = <
host = <
rcmd = host
ftp = ftp
>
plain = <
something = something-else
>
>
fcc-mit-ticketflags = true
[realms]
LOCAL.RU = <
kdc = pdc
kdc = bdc
admin_server = pdc
default_domain = LOCAL.RU
>
[domain_realm]
.biznes.gr = LOCAL.RU
biznes.gr = LOCAL.RU
[login]
krb4_convert = true
krb4_get_tickets = false

smb.conf
[global]workgroup = LOCALrealm = LOCAL.RU
server string = %h server (Samba, Ubuntu)
interfaces = 127.0.0.1, 192.168.1.7
bind interfaces only = Yes
server role = standalone server
security = ADS
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind nss info = rfc2307
idmap config BIZNES:range = 500-40000
idmap config BIZNES:schema_mode = rfc2307
idmap config BIZNES:backend = ad
idmap config *:range = 70001-80000
idmap config * : backend = tdb
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
print ok = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers

14. Для запуска lxde в /etc/skel должен быть файл *.xsession с параметром startxlde
Сброс сессии
cat /var/log/xrdp-sesman.log | grep username
cat /var/log/xrdp-sesman.log | grep xpid=2808
++ terminated session: username username, display :10.0, session_pid 2428, ip 192.168.0.10:4706 — socket: 8
Ps ax | grep 2808
kill -9 2808

15. Файл autostart
@xscreensaver -no-splash
@lxpanel —profile LXDE
@pcmanfm —desktop —profile LXDE
@/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
@/home/ubuntuadmin/ruskey
@/usr/bin/wine start /d /home/LOCAL /username/.wine/drive_c/TM912/ transman.exe

16.Установка настройка FreeNX
sudo add-apt-repository ppa:freenx-team/trusty
sudo apt-get update
sudo apt-get install freenx-server

после генерируем ключ и импортируем его с сревера на клиент

Источник

Оцените статью