给linux插上XManager的翅膀

很多时候在linux开发,需要进行一些图形方面的展示,比如python画图、查看照片等等,此时就需要windows来帮助远端的linux服务器进行显示。主要依托于XManager,客户端使用xshell,其他可以类似配置,详细请继续往下看,包教包会。

XManager安装

Xmanager 是一款小巧、便捷的浏览远端X窗口系统的工具。在工作中经常使用Xmanager来登录远端的Solaris系统,在X窗口系统上作图形化的操作。
下载地址:http://rj.baidu.com/soft/detail/35931.html
windows软件安装,so easy~,序列号在网上找个就可以了。

gtk安装

GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。

说简单点,GTK是linux下的一个图形开发包,不是必装,但是为了我们方便测试,我们现在还是把它装了吧。下面安装需要root权限哦。

yum groupinstall "Development Tools"

yum install gtk+-devel gtk2-devel

测试:gtk-demo

提示肯定如下:

(gtk-demo:14550): Gtk-WARNING *: cannot open display:*

这就对了,安装完了,但是还不能执行gtk-demo。

Xshell设置

下面的设置就是windows授权xshell可以将linux服务端的图形显示拿来让我windows显示。

xshell登陆了某个服务器后,点文件→属性→ssh下面的隧道,勾选转发X11链接到(X),下面选Xmanager。

xshell设置

当然,现在测试gtk-demo还是不行的,后面会不停遇到上面那个错误。

ssh设置

上面只是windows允许了,linux这边还没有允许呢,所以需要对ssh进行设置。

vim /etc/ssh/sshd_config #need root user

去掉下面四行前面的注释:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
UseDNS no

保存后需要重新加载:

service sshd reload

xauth安装

xauth命令用于显示和编辑被用于连接X服务器的认证信息。也就是这个命令用来授权控制链接Xmanager的用户。

yum install xorg-x11-xauth

安装完后,可以试一下xauth命令,不过又会出现另一个非常恶心的错误,就是:

xauth: file /root/.Xauthority does not exist

不用理会。

SSH -Y登陆

我们切换到自己的普通账户,执行下面的命令:

ll -a /home/yourname

看看下面有没有一个.Xauthority文件,答案是没有,好,见证奇迹的时刻来了,我们执行下面的命令,就在自己的账户、本台服务器上:

ssh -Y yourname@host

ll -a /home/yourname

貌似还是没有.Xauthority文件,奇迹并没有发生,我们继续努力。

安装xhost

yum install xorg-x11-server-utils

再进行ssh -Y yourname@host,发现.Xauthority文件有了,还是很不错的。

执行gtk-demo,但是可能还会提示:

connect localhost port 6000: Connection refused,很崩溃啊,(⊙﹏⊙)b

网友说是得安装:openssh-server,那我们就安装个试试。

安装openssh-server

yum install openssh-server

然后再试gtk-demo,fu*k,成功了!

但是,有些还是提示了编码错误(不过总算打开了),

(gtk-demo:1267): Pango-WARNING : failed to choose a font, expect ugly output. engine-type=’PangoRenderFc’, script=’latin’

广大网友还是很厉害的,通过下面的办法可以解决:

yum install dejavu-lgc-sans-fonts

不信你再试,肯定可以看到下面的界面了。

gtk-demo

python几个测试

安装PIL库

建议直接安装anaconda,这个python很好用,自带很多库。

wget https://repo.continuum.io/archive/Anaconda2-4.4.0-Linux-x86_64.sh

sh Anaconda2-4.4.0-Linux-x86_64.sh

打开图片

from PIL import Image
im = Image.open('test.jpg')
im.show()

是不是显示了?!~,然后并没有,安装ImageMagick。

yum install ImageMagick

重试,便可。

画一个图

#-*-coding:utf-8-*-

import os
import sys
import numpy as np
from PIL import Image,ImageDraw

reload(sys)
sys.setdefaultencoding('utf8')

import matplotlib.pyplot as plt
src=Image.open('1.jpg')
r,g,b=src.split()

plt.figure("lena")
ar=np.array(r).flatten()
plt.hist(ar, bins=256, normed=1,facecolor='r',edgecolor='r',hold=1)
ag=np.array(g).flatten()
plt.hist(ag, bins=256, normed=1, facecolor='g',edgecolor='g',hold=1)
ab=np.array(b).flatten()
plt.hist(ab, bins=256, normed=1, facecolor='b',edgecolor='b')
plt.show()

plt.figure(1) # 创建图表1
plt.figure(2) # 创建图表2
ax1 = plt.subplot(211) # 在图表2中创建子图1
ax2 = plt.subplot(212) # 在图表2中创建子图2
x = np.linspace(0, 3, 100)
for i in xrange(5):
    plt.figure(1)  #❶ # 选择图表1
    plt.plot(x, np.exp(i*x/3))
    plt.sca(ax1)   #❷ # 选择图表2的子图1
    plt.plot(x, np.sin(i*x))
    plt.sca(ax2)  # 选择图表2的子图2
    plt.plot(x, np.cos(i*x))
plt.show()

下面是程序的展示图:

python画图

python画图

sudo用户配置

上面的配置都是在自己的个人账户下,而且经过了ssh -Y的二次连接,如果sudo到其他账户的话,是不能够生效的。所以还需要下面的几步设置才能保证sudo后还能正常使用。

本地xshell配置

之前连接都需要ssh -Y(和设置转发X11一样),我们需要做的是在xshell本地设置成X11 转发,这样每次连接就相当于自动添加了-Y,如下图:

本地xshell配置

个人账户设置

在自己账户下:

vim ~/.bashrc

添加下面一句,也就是登陆的时候自动把授权信息打印出来,否则没办法直接访问:
xauth list > /home/sudo_user/.xauth.list
source ~/.bashrc

这样在登陆自己账户的时候,就可以把xauth的授权信息cat出来了。

sudo账户设置

sudo -i -u sudo_user

vim ~/.bashrc

添加下面一句,把个人账户cat出的xauth信息添加到该sudo_user下:
cat /home/sudo_user/.xauth.list | while read line; do xauth add $line;done

如此设置,就可以使得sudo_user也能够使用个人账户的授权信息了。

上面的设置可以参考下:http://blog.csdn.net/xeseo/article/details/11963473

请大家自己实践:xauth list 和 xauth add命令的作用。

附小知识

ssh附带其他命令,比如sudo的办法(采用-tt选项):

ssh -tt -Y own_user@host "sudo -i -u sudo_user"

Over~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值