欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

openstack 自己制作云桌面linux瘦客户机

程序员文章站 2024-03-23 22:14:58
...

    openstack云桌面有B/S和C/S两种连接方式,B/S只要有浏览器即可,手机,平板,旧PC都可以,对于C/S模式,即瘦客户机,可以把旧电脑作为瘦客户机使用,也可以网购各种配置的专门瘦客户机,其实就是集成在一块主板上的简易电脑主机,在上面运行什么宿主引导系统呢,可以是windows或Linux的桌面版,但要简单高效,对瘦客户机硬件最简化要求,可以安装winpe或网上找轻量级的linux桌面版。

   我选择的是xenialpup64,这款Linux系统带桌面及丰富的系统和应用软件,安装好后才占用不到500M的存储空间,内存也不到1G,以下是在vmware上运行该系统。

 

openstack 自己制作云桌面linux瘦客户机

  云桌面客户端我用的是remote_viewer,因为openstack服务端采用的是spice协议。

运行remote_viewer客户端,输入云桌面虚拟机端口即可连接:

openstack 自己制作云桌面linux瘦客户机

但要在实际如教学实训中让学生使用,需要让连接自动化,以下是实现逻辑,界面美工还没有处理。

用python开发一个简单的桌面交互程序,实现如下步骤:

1.打开瘦客户机后,自动运行该程序

2.首先弹出输入账号密码对话框,云桌面用户(学生)输入自己的账号密码

3.根据登录信息,取出分配给该学生的虚拟机名称(1个学生上不同的课,可能需要多个安装不同环境的虚拟机),让学生选择要进入的虚拟机。

4.根据学生的选择,启动对应虚拟机(如果未启动),然后获得该虚拟机的spice连接url,包括所在的节点IP及spice连接端口号(获得的url如:spice://192.168.0.100:5905)

5.把上面所获得的url作为remote-viewer的参数,启动remote-viewer连接虚拟机桌面

6.在用户关闭虚拟机或直接关闭remote-viewer后,直接关闭瘦客户机系统和电源

在整个过程,用户不直接操作瘦客户机上的操作系统

实现逻辑代码如下:

import easygui as g 
import urllib
import urllib2
import json

#以下弹出窗口获取用户输入的账号密码
msg="Login In remote desktop" 
title="Login" 
fieldNames=["*User:","*Password:"] 
fieldValues=[] 
fieldValues=g.multpasswordbox(msg,title,fieldNames) 
while True: 
	if fieldValues==None: 
		break errmsg="" 
	for i in range(len(fieldNames)): 
		option=fieldNames[i].strip() 
		if fieldValues[i].strip()=="" and option[0]=="*": 
			errmsg+=("[%s] must input" %fieldNames[i]) 
	if errmsg=="": 
		break 
	fieldValues=g.multpasswordbox(errmsg,title,fieldNames,fieldValues) 


#以下获取分配给用户的虚拟机列表
url = "http://192.168.0.100:8000/login/" 
params={"u":fieldValues[0],"p":fieldValues[1],"t":"cs"}
data = urllib.urlencode(params) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req)
html = response.read()
vmlist=json.loads(html)
vmarr=[]
for vm in vmlist:
	vmarr.append(vm.get('vmname'))

#显示虚拟机列表让用户选择
selvm=g.buttonbox("please select desktop?",choices=vmarr)

#获取选择虚拟机的ID
myvmid=""
for vm in vmlist:
	if vm.get('vmname')==selvm:
		myvmid=	vm.get('vmid')
		break

#getvncport服务端程序根据虚拟机ID启动该虚拟机,并获取连接URL
url="http://192.168.0.100:8000/getvncport/?ty=spice&vm=" + myvmid
req = urllib2.Request(url) 
response = urllib2.urlopen(req)
spice = response.read()

#spice是云桌面连接url,以下程序启动连接,并在退出连接后关闭瘦客户机电源
os.popen('remote-viewer -f ' + spice + ' && poweroff')

openstack 自己制作云桌面linux瘦客户机

登录界面

openstack 自己制作云桌面linux瘦客户机

选择云桌面界面,未加图片,未美工呵呵

openstack 自己制作云桌面linux瘦客户机

选择第一个云桌面,连接到该桌面

 

 

 

 

 

相关标签: openstack