继 Git 后贵系的另一个暑培项目,讲授 Linux 的基本用法,恰好这学期「 *** 作系统」课程实验需要用到 Linux,而且实验室的服务器也需要学习相关用法,故学之。
本文部分内容参考了清华 ZAH 同学的教程,部分参考了 刘遄 老师的《 Linux 就该这么学 》, 菜鸟教程-Linux 。
Linux,全称 GNU/Linux,是一套免费使用和自由传播的类 Unix *** 作系统。相比于其他系统,Linux 更加稳定且有效率、更加安全、相对不耗资源……以至于几乎所有 长期稳定运行的网站服务器 上、在 处理大数据的集群系统 中,以及需要 协同工作的服务器环境 都采用 Linux 系统。
Linux 严格来说是单指 *** 作系统的 内核 ,因 *** 作系统中包含了许多用户图形接口和其他实用工具。如今 Linux 常用来指「基于 Linux 的完整 *** 作系统」,内核则改以「Linux 内核」称之。
一些组织或厂商将 Linux 内核与各种软件和文档 包装 起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。
在学习 Linux 的过程中,有几个易混淆的概念:
命令行界面(Command-Line Interface,CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(Character User Interface,CUI)。
一般来说,在 服务器 中较多采用的是 CLI 界面,或许有以下几点原因:
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 等系统的桥梁,如同「 壳 」一般。它的本质是一个 命令解释器 ,将用户输入的命令(符合 Shell 语法)处理成对应 *** 作系统的控制命令 ,处理完毕后再将结果反馈给用户。
不同 *** 作系统下面的 Shell 种类众多,常见的有:
Ken Thompson 的 sh 是第一种 Unix Shell,本教程关注的是 Bash,也就是 Bourne Again Shell,Bash 也是大多数 Linux 系统默认的 Shell。
终端 (Terminal),是一种用来让用户输入数据至计算机,以及显示其计算结果的机器。早期的终端通常就是一台 电子打字机 (Teletypewriter, TTY),后来随着计算机的发展,打字机被键盘和显示器取代,而 GUI 界面也成了主流。
于是,这时候我们就需要一个程序来模拟传统终端的行为,即 终端模拟器 (Terminal Emulator),当用户打开终端模拟器时,实际上是进入一个 会话进程 (Session)。终端模拟器有很多,这里举几个经典的例子:
在 Linux 系统中打开终端时,会看到一个提示符,通常类似 hewei@hewei-VirtualBox ~$ 。在提示符下,命令会被 Shell 环境 解析并反馈 到终端中。
提示符是 Shell 最主要的 文本接口 。它告诉你,你的主机名是 hewei-VirtualBox ,你现在的身份是 hewei 并且你当前的 工作目录 (Current working directory)是 ~ (默认在 /home/hewei/ 用户目录)。
$ 符号表示您现在的身份不是 root ,输入如下命令可以暂时切换到 root 权限:
输入密码后,可以看到提示符变成了 root@hewei-VirtualBox:/home/hewei# ,其中 # 符号就是超级用户权限的标志。再输入 exit 即可退回普通用户身份。
在 Git学习笔记 #1 基础知识介绍 中,已经简单介绍了命令行界面的一些使用技巧,这些命令在 Linux 系统的 Bash 中同样使用。这里罗列出 Linux 常用快捷键:
常见的执行 Linux 命令的格式是这样的: 命令名称 [命令参数] [命令对象] 。其中,命令参数用于对命令进行调整,使之更好地贴近需求,参数分为 长格式 和 短格式 ,如: man --help , man -h 。短格式之间可以合并,合并后仅保留一个减号即可。
在 Linux 相关的手册中,我们会约定俗成地将可选择的、非必需的参数使用 中括号 引起来,而命令所要求的、必须有的参数或对象值,则不带中括号。
此外,要注意 Linux 系统中的命令、参数、对象都是 严格区分大小写 的。
Shell 除了是一个 交互式 (Interactive)的命令解释器,它还是一种 程序设计语言 (Shell Script)。它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
用 Shell 编写的 脚本文件 即 .sh 文件,它能在 Shell 环境下运行,fork 出一个 子进程 ,调用系统内核来执行 批处理 (Batch)的系统控制。在文件的第一行,通常是 #!/bin/bash ,这句话约定了这个脚本需要哪种 Shell 环境来执行。
通过如下命令就可以执行一个 Shell 脚本:
下面罗列了部分常用指令与参数的介绍,更多功能请在帮助手册中检索。
详细的内容可以参考下面的参考文档,下面的内容主要是为网络设备运维人员使用的pexpect 跨平台简明教程。
Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况。
pexpect是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。它可以用来实现与ssh, ftp, telnet等程序的自动交互。
send命令后执行结果内容保存在buffer中,这时child.expect('keyword')后,child.before即为“keyword”之前的字符串,child.after即为匹配的”keyword”字符串。
command的执行结果都保存在一个buffer中,每次执行expect时都从buffer中开始检查匹配的pattern,如果找到了匹配的pattern,则所有在匹配处之前的内容都从buffer中清除。
(这边没有看明白也没有关系,可以看后面的实践篇例子)
通常维护人员有的偏向于用WIN系统,有的偏向于LINUX系统。所以前期团队希望形成一个统一框架的时候就出现了一个难题。框架如何适用于不同的系统。
LInux系统pexpect包,win系统前期尝试使用winpexpect,但是程序改动很大,并没有调试成功。
如何在WIN系统使用python的pexpect包很难找到相关资料,某乎上都是类似的疑问没有解答。
团队成员增加后,终于有了新的思路 , 团结就是力量 。
通过这个模块进行不同系统的适配。
将plink.exe装在python的文件夹在python的安装目录下,win系统可以同样使用pexpect模块
参考信息1:Pexpect 官方文档 New in version 4.0: Windows support。Pexpect can be used on Windows to wait for a pattern to be produced by a child process, using [ pexpect.popen_spawn.PopenSpawn ]
参考信息2:PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。plink是可以独立使用的exe实现形式,可以让我们直接在命令行制定好命令,然后执行,完成后自动关闭session。ssh是一个安全通道协议。plink是这个通道协议的一个实现 [图片上传中...(-572001-1587612890428-0)]
从官方文档来看,
sendline() 和 send() 唯一的区别就是在发送的字符串后面加上了回车换行符,这也使它们用在了不同的地方:
只需要发送字符就可以的话用send()
如果发送字符后还要回车的话,就用 sendline()
但是在调测过程中,WIN系统下命令输入后,child.before始终得不到预想中的结果。
经过逐步排查,发现在WIN系统下只能使用send() ,如果使用sendline() ,第一次交互没有问题,后续交互就开始问题。
WIN系统下child.before输出为b'byte型,做判断时要转为str型。具体可以参考最后面一篇讲编码类型的文章,讲的很详细。
例子1
send Username后,child.before一直到'Tac_Userna',child.after为‘me:’,child.buffer为空。
expect关键字assword:后,child.before回显一直到keyword之前,child.after为keyword,child.buffer为空。
例子2
下发command命令,child.before维持原来的不变,expect到keyword以后,child.before变为下发command命令后的设备回显。
参考文档
官方文档
探索Pexpect
Pexpect示例及使用Tips
Python Pexpect模块讲解
Pexpect模块使用说明
windows下使用plink实现全自动登陆ssh
Python3_字符编码
你可以去搜索海明工作室的简明教程,针对初学的,貌似用的是Ubuntu版本,Fedora的要另外去搜,红旗的去官网看看就行了,没必要下载的。
我这里有一份下载单,贴给你,我不知道还能用不,FTP的。
可能显示的时候比较乱哈,见谅!
核心书籍:《练成Linux系统高手》教程(全程图解PDF格式)
不管你是何水平,学了Linux,那么这些内容都是要去掌握的。对于所有学习Linux的朋友来说,本教程都具有很好的指导作用,每个步骤都有详细的图文说明。
从今天起,你也能成Linux系统高手。因为你将会 *** 作Linux窗口管理器,它可以打开一个特殊的窗口,即为终端窗口(terminal),它将为用户提供一个标准的命令行接口,用户可在窗口显示的提示符中输入带有选项和参数的命令。
看着别人 *** 作那满屏幕的洋文,不可思议,那肯定是一个Linux高手,其实你也能成为高手中的一员。使自己的Linux技能疯狂增长就必须学会 *** 作与看懂这些洋文。本教程系PDF格式。外部下载链接:ftp://FTP_hllinux:123456@211.95.73.26/练成Linux系统高手教程.pdf(请右键另存为或是用下载工具下载,如一时无法连接请稍候再连接,保证能下)
以下是ftp里的内容:
ftp://FTP_hllinux@211.95.73.26/的索引
回到上一层文件夹
File: 0 从硬盘安装Linux *** 作系统.pdf1523 KB2007-4-190:00:00
File: 1zxhlinux.rar2057 KB2006-11-220:00:00
File: 2007.7.18.rar640 KB2007-12-2320:51:00
File: 2007linux.chm204 KB2007-1-160:00:00
File: 2007从Windows转向Linux基础教程.CHM104 KB2007-1-250:00:00
File: 2007年Linux普及书籍从Windows转向Linux基础教程.pdf1514 KB2006-12-300:00:00
File: Apache 2.2 手册中文版.chm1362 KB2007-12-2321:04:00
File: Debian GNU安装与配置图解--详解.pdf260 KB2007-4-300:00:00
File: Debian--GNU安装与配置图解--详解.pdf2592 KB2007-6-300:00:00
File: DebianLinux安装与基本配置全程图解教程.pdf2386 KB2007-1-110:00:00
File: FedoraCore Linux6安装图解.pdf1257 KB2007-1-10:00:00
Directory: LAMP2008-1-715:04:00
Directory: LINUX and UNIX Shell2007-12-2322:57:00
File: LINUX应用技术精华{面向初学Linux朋友的书籍}.CHM1876 KB2007-7-2622:28:00
File: Linux *** 作系统文件系统学习教程.pdf309 KB2007-1-300:00:00
File: Linux基础复习题.pdf801 KB2007-1-130:00:00
File: Linux命令从入门到精通一到十章.rar3727 KB2007-5-70:00:00
File: Linux命令学习加Linux标准文本处理命令.pdf1769 KB2007-1-180:00:00
File: Linux扫盲行动教程.chm96 KB2007-2-130:00:00
File: Linux扫描式教程.chm280 KB2007-2-220:00:00
File: Linux扫描式教程.pdf360 KB2007-3-200:00:00
File: Linux实用培训学习教程1.0(最终版).chm96 KB2007-5-150:00:00
File: Linux实用学习教程(第一版).chm985 KB2007-2-270:00:00
File: Linux完整教程(初级教程).exe2133 KB2007-12-2323:00:00
File: Linux系统常用命令快速入门.chm36 KB2007-1-170:00:00
File: Linux系统常用命令快速入门.pdf341 KB2007-1-170:00:00
File: Linux系统学习笔记.pdf70 KB2007-2-70:00:00
File: Linux系统疑难解答之99式.pdf210 KB2007-2-250:00:00
File: Linux系统纸坛.pdf4707 KB2007-5-50:00:00
File: Linux学习笔记.pdf806 KB2007-1-150:00:00
File: Linux与Samba服务器专题教程.pdf212 KB2007-1-290:00:00
File: MagicLinux安装全程图解.chm1401 KB2007-1-210:00:00
Directory: Mr Tang2007-12-2323:10:00
File: O'Reilly - Learning Red Hat Linux, 3rd Edition.chm4118 KB2007-12-2323:19:00
File: RHEL入门1.rar2333 KB2007-1-80:00:00
File: Red Hat Enterprisr Linux AS 4图解教程之Linux基本 *** 作.pdf423 KB2007-1-160:00:00
File: Redhat9.rar16926 KB2007-8-2816:41:00
File: Redhat9中文官方文档.rar15366 KB2007-8-1222:19:00
File: Ubuntu7.04图解安装教程.pdf987 KB2007-6-260:00:00
File: Ubuntu704.chm757 KB2007-12-1511:53:00
File: Ubuntu图解安装教程.pdf1230 KB2007-1-70:00:00
Directory: fc2007-8-412:21:00
Directory: hl2007-10-1911:47:00
File: ibmlpi.rar3046 KB2006-11-220:00:00
File: issue4_cn.pdf2007-12-2321:05:00
Directory: linux2007-10-1723:06:00
File: linux.pdf873 KB2007-4-260:00:00
File: linux.rar20391 KB2006-11-230:00:00
File: linux200607.rar3101 KB2006-11-220:00:00
File: linux200608.rar4518 KB2006-11-220:00:00
File: linuxbz.rar8780 KB2006-11-220:00:00
File: linuxpc.rar14129 KB2006-11-220:00:00
File: linuxpeix.rar8587 KB2006-11-220:00:00
File: linuxsp.rar22395 KB2006-11-230:00:00
File: linuxxtglzn.rar19455 KB2006-11-230:00:00
File: linux程序设计3.rar3959 KB2007-10-2116:21:00
File: linux基础视频教程1.rar17537 KB2007-3-90:00:00
File: linux基础视频教程2.rar33344 KB2007-3-90:00:00
File: linux基础视频教程3.rar26663 KB2007-3-90:00:00
File: linux视频1.rar26902 KB2007-1-200:00:00
File: linux视频2.rar27570 KB2007-1-200:00:00
File: linux视频3.rar32814 KB2007-1-210:00:00
File: linux视频4.rar15274 KB2007-1-210:00:00
Directory: logfiles2008-1-54:00:00
File: lumaqq_2006M1-linux_gtk2_x86_no_jre.tar.gz12411 KB2006-11-220:00:00
File: redhatlinux9(1).rar1760 KB2007-1-190:00:00
File: redhatlinux9(2).rar672 KB2007-1-190:00:00
File: redhatlinux9(3).rar64 KB2007-1-190:00:00
File: redhatlinux9.rar22108 KB2006-11-220:00:00
File: redhatlinux9xtgl.rar10430 KB2006-11-230:00:00
Directory: redlib2007-12-2323:25:00
Directory: sp2008-1-416:45:00
Directory: suse2007-12-1816:57:00
Directory: urrs2008-1-716:50:00
File: webmin1340.tar.gz14201 KB2007-12-2323:36:00
Directory: wz2007-12-1622:54:00
File: 从Windows转向Linux教程E3000基础学习.chm3037 KB2007-4-140:00:00
File: 从Windows转向Linux教程E3000基础学习.pdf3499 KB2007-4-170:00:00
File: 从Windows转向Linux教程V2.chm3260 KB2007-4-30:00:00
File: 从Windows转向Linux教程V2.pdf3952 KB2007-4-40:00:00
File: 从头开始对ubuntu进行优化教程.pdf758 KB2007-1-190:00:00
File: 从硬盘安装Linux.pdf2007-12-2014:35:00
File: 红联linux *** 作系统视频教程1.rar51205 KB2006-11-260:00:00
File: 红联linux *** 作系统视频教程4.rar59957 KB2006-11-290:00:00
File: 红联linux *** 作系统视频教程5.rar58308 KB2006-11-290:00:00
File: 红旗linux桌面5.0安装指南.rar2014 KB2007-1-160:00:00
File: 快速成Linux系统管理员教程.pdf873 KB2007-1-270:00:00
File: 练成Linux高手.chm3853 KB2007-2-30:00:00
File: 练成Linux系统高手教程.pdf4707 KB2007-1-250:00:00
File: 一周内学会linux系统管理.rar2053 KB2007-8-1122:11:00
2007优秀Linux电子书籍集合下载这些Linux教程都是从红联中集合的,还有很多,这里我选些我知道较好的推荐给大家。
Linux零基础初级教程
很多Linux基础的知识在里面都有讲
下载地址:http://www.linuxdiyf.com/bbs/thread-51667-1-1.html
Linux安装速成教程
不懂安装的看这个就行了,还有里面有分区图解介绍
下载地址:http://www.linuxdiyf.com/bbs/thread-57353-1-2.html
学成Linux快手
学习Linux命令的要看看这个了
下载地址:http://www.linuxdiyf.com/bbs/thread-59461-1-1.html
To新手:从Windows转向Linux教程 V2.0
基础开始
下载地址:http://www.linuxdiyf.com/bbs/thread-41851-1-1.html
从Windows转向Linux教程 E3000基础学习
很好的图解基础讲解,Linux初学者学习最好了
下载地址:http://www.linuxdiyf.com/bbs/thread-43084-1-1.html
Linux学习新概念书籍发布:Linux扫描式教程
很多技能介绍
下载地址:http://www.linuxdiyf.com/bbs/thread-37277-1-1.html
Ubuntu实用学习教程
都是Ubuntu的图解介绍
下载地址:http://www.linuxdiyf.com/bbs/thread-46509-1-2.html
Fedora技术学习教程 CHM版
还有个PDF版的,Fedora系统的知识介绍
下载地址:http://www.linuxdiyf.com/bbs/thread-54686-1-1.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)