- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于LinuxOnlineJudge在线提交环境搭建
基于LinuxOnlineJudge在线提交环境搭建
摘 要OnlineJudge(OJ)是基于图形化用户界面的在线评测系统,用于在线检测代码的正确性。本文利用python语言和Linux环境的命令行方式,为当前OJ设计并搭建一个基于Linux的纯命令行在线提交环境,使用该环境可以在纯命令行下向OJ提交题目。该环境成本低,占用资源少,运行速度快,服务端便于统一管理。
【关键词】程序设计 命令行 在线提交环境(平台)
1 前言
人机交互随软件技术的发展而进步,一直在按照用户的期望向着友好、方便、自然的方向发展。人机交互从原始的命令行(Command Line Interface,CLI)到图形化用户界面(Graphical User Interface, GUI),再发展到现在的自然用户界面(NaturalUserInterface, NUI)。虽然当前CUI已经不是主流了,但命令行技术作为更接近底层的文本模式,永远不会过时。
随着程序设计基础教学的发展,各个高校纷纷建立OJ,但当前OJ平台是基于图形化用户界面的,目前还没有OJ平台使用命令行界面。针对当前的情况,本文使用纯命令行界面,设计并搭建了纯命令行的OJ在线提交环境。作为日常使用,图形化界面是方便且易于操作的,但作为服务器,图形模式会占用大量的系统资源,尤其是内存。基于服务器的考虑,该环境的搭建借用Linux环境的命令行方式。系统终端为纯文本,不使用图形化界面,占用资源少,运行速度快,可以对资源有效利用。另外,该系统运行环境相对简单,不需要太多的外部环境,客户端不需要特殊环境搭建,可以通过终端方式(借用putty,ssh,Xshell等工具)实现登录。
2 实验平台环境搭建
本文基于远程登录,ssh映射的原理,将OJ服务器与用户之间增加一个Linux服务器和一个中转服务器,搭建该环境。使用的搭建工具包括Linux服务器,OJ服务器,终端软件。搭建提交环境步骤如下:
(1)实现端口转发。因为Linux服务器使用的是局域网,只能在特定(124)网段使用,需要将端口转发到中转服务器的特定(6666)端口上才能实现外网访问。
(2)创建固定数目的学生账户和老师账户。
(3)给账户设定权限。使学生之间不能互相访问进入各自的目录下,但教师用户可以进入学生的目录。
(4)将特定的功能分配到每个用户,如设定提交指令。
这其中所有的操作通过shell脚本实现,每一个操作都建了一个脚本。
当前OJ的结构是用户直接登录到OJ服务器,本文将OJ服务器与用户之间增加一个Linux服务器和一个中转服务器,各个服务器与运行在Linux服务器中的服务程序构成了为本校OJ设计的命令行提交系统。用户需要通过终端方式远程登录到Linux服务器,再进行相应操作,Linux服务器将登录请求和提交题目操作传递到OJ服务器,OJ服务器再对这些操作进行相应处理,再通过服务器之间的连接将结果依次返回。但是Linux服务器不能被用户直接访问,用户需要通过一个能被直接访问到的服务器登录到Linux服务器,所以我们将OJ平台的服务器作为中转服务器,靠ssh端口映射将中转服务器与Linux服务器联系起来。为了加以区别,本文将中转服务器与OJ服务器分别表示。系统的数据交互体系结构如图1所示。
3 系统实现
该系统实现的功能主要包括用户登录、代码编写及编译、代码运行、代码暂存、用户提交、结果返回。用户通过终端程序,远程登录到Linux服务器,再登录OJ账号,连接到OJ服务器,进行想要进行的操作。代码的编写可以使用Linux系统中的编辑器(如vim等)。在终端中输入“vimtest(文件名称).c”,回车进入vim编辑器,进入编辑状态(按a键),输入代码语句。输入完成后,退出编辑状态(按esc键),输入“:wq”,按回车,可保存代码文件且退出vim编辑器回到终端命令窗口。代码的编译可以依靠gcc命令,输入“gcctest.c”编译代码,最后使用“./test.out”执行,查看结果。因为代码的编写、编译、运行和暂存功能是在Linux服务器内部实现的,所以在这里重点介绍一下用户登录,用户提交(包括结果返回)的过程。
3.1 登录
通过终端程序远程登录到Linux服务器后,用户要进行登录账号操作,通过命令行向Linux服务器提交登录请求,Linux服务器接收到请求后,返回相应结果,用户输入账号密码。登录具体操作通过python语言中的提交表单实现,服务程序将用户输入的账号密码提交到OJ服务器,OJ服务器对账号密码进行验证。若验证错误,则登录失败,将结果依次返回;若验证正确,Linux服务器对登录结果进行处理,判断用户是否属于学生组,若是
原创力文档


文档评论(0)