分享页面
已经找到“” 的记录2710条
Ubuntu18.04系统如何安装chkrootkit
 

chkrootkit是一个linux下检测RootKit的脚本。在ubuntu18.04中如何安装chkrootkit工具呢?本文给出详细说明。

1.首先更新软件列表

sudo apt update

2.安装chkrootkit工具

sudo apt install chkrootkit

3.测试是否安装成功

chkrootkit -V

Ubuntu18.04如何使用系统防火墙ufw
 

Ubuntu18.04系统中,如何使用防火墙?本文将针对此问题进行说明。

ubuntu下的防火墙是ufwufw相关命令需要使用sudo

 

sudo ufw enable #开启防火墙

sudo ufw disable #禁用防火墙

sudo ufw reset #清空防火墙设置,并且禁用防火墙

sudo ufw status #查看防火墙状态

没开启防火墙的时候ufw status 提示Status: inactive,开启防火墙的时候提示Status: active

 

打开或者关闭某个端口

 

sudo ufw allow/deny

 

例如

sudo ufw allow 22 #允许22端口通过

sudo ufw allow 80 #允许80端口通过

sudo ufw deny 25 #禁止25端口通过

 

 

Ubuntu18.04如何配置系统软件源
 

Ubuntu18.04系统如何对软件源进行配置呢?本文将针对此问题进行说明。

由于ubuntu默认使用国外的软件源,这边展示如何更换成国内的软件源,以便获取更好的体验。国内有很多ubuntu的镜像源,例如网易,阿里,清华大学等等,这边展示如何更换成清华大学的镜像源。

1.首先,对旧的镜像源进行备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2.然后对镜像源配置文件进行修改

sudo vi /etc/apt/sources.list

 

在文件最前面添加以下内容:

 

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

3.修改完成后,保存文件。运行:

sudo apt-get update

sudo apt-get upgrade

配置完成。

说明:如果需要更换其他源,可以在网上搜索对应的源配置。

 

Ubuntu18.04如何扩展磁盘空间
 

Ubuntu18.04系统如何扩展磁盘空间呢?

1.输入fdisk -l按回车键查看当前分区信息

2.输入fdisk /dev/sda按回车键

3.输入p按回车键查看并记录分区表信息

4.参考下图所示输入删除sda5sda2

5.参考下图所示创建新的扩展分区

6.对扩展分区进行分区,参考下图,根据第3步记录对应分区“start”和“end”的数值进行设置

7.参考下图设置空间类型

8.参考下图然后将剩余空间创建为新的分区

9.参考下图设置新分区的空间类型

10.输入wq按回车键保存退出

11.输入partprobe 按回车键或者重启机器更新分区信息

12.输入mkfs.ext3 /dev/sda6按回车键格式化分区

13.输入lvm按回车键进入lvm管理,然后输入pvcreate /dev/sda6 按回车键初始化分区

14.输入vgdisplay -v按回车键查看卷和卷组信息

15.输入vgextend cloud-vg /dev/sda6将初始化过的分区加入到虚拟卷组cloud-vg

16.输入vgdisplay -v查看Free PE的值

17.输入lvextend -l 2559 /dev/mapper/cloud--vg-root按回车键扩展已有卷的容量(2559 是通过vgdisplay查看的free的大小,/dev/mapper/cloud--vg

-root名称通过df -h命令查看)

18.输入quit按回车键退出lvm编辑

19.输入lvextend -l 100%FREE /dev/cloud-vg/root按回车键将添加的磁盘空间添加至根分区

20.输入resize2fs /dev/mapper/cloud--vg-root按回车键更新分区空间信息即可

 

Ubuntu18.04系统如何用diff3命令比较3个文件并将不同之处显示到标准输出
 

ubuntu18.04中如何用diff3命令比较3个文件,将3个文件的不同的地方显示到标准输出

语法

diff3(选项)(参数)

选项

-a:把所有的文件都当做文本文件按照行为单位进行比较,即给定的文件不是文本文件;

-A:合并第2个文件和第3个文件之间的不同到第1个文件中,有冲突内容用括号括起来;

-B:与选项“-A”功能相同,但是不显示冲突的内容;

-e/--ed:生成一个“-ed”脚本,用于将第2个文件和第3个文件之间的不同合并到第1个文件中;

--easy-only:除了不显示互相重叠的变化,与选项“-e”的功能相同;

-i:为了和system V系统兼容,在“ed”脚本的最后生成“w”和“q”命令。此选项必须和选项“-AeExX3”连用,但是不能和“-m”连用;

--initial-tab:在正常格式的行的文本前,输出一个TAB字符而非两个空白字符。此选项将导致在行中TAB字符的对齐方式看上去规范。

参数

要比较的三个文件名

实例:

1.查看要比较的三个文件的内容

2.diff3命令进行比较并输出结果

Ubuntu18.04系统ifconfig命令的使用
 

Ubuntu18.04系统ifconfig如何使用呢?本文将针对此问题进行说明。

ifconfig 可以查看/配置计算机当前的网卡配置信息

1.查看网卡配置信息

ifconfig

2.查看网卡对应的 IP 地址

ifconfig | grep inet



Linux系统中重复执行历史命令的方法
 

在正式开始之前,我们先随便执行几条命令,便于后面演示。

$ ls -l

$ pwd

$ date

$ uname -a

方法1!!

没错,两个叹号也是一条命令,它会重复执行最后执行的那条命令。

$ !!

这条命令等同于如下效果:

$ !!

如果需要 root 权限,同样只需在前面加 sudo 即可。

$ sudo !!

方法2!un

假如我们在操作的过程中输入了非常多的命令,现在要重复执行其中的一条,该怎么处理?有一种简单的方法,就是利用上下箭头去翻查,但如果之前输入了太多命令,翻查起来可以要找半天。

这时候,!un 这种命令就显现出它的作用来了。记住,这个 un 不是固定的,它是代表你想要重复输入的命令的前几个字符。

比如在这个例程中,我们想重复执行 uname -a 这条命令,只需这样执行:

$ !un

uname -a

如果你之前输入的命令有多个是以 un 开头的,那么你可能需要多输入几个字符。

$ !uname

方法3!-1

这个方法就比较灵活了,!-1 代表重复执行最后一条命令,!-2 表示重复执行倒数第二条命令,!-n 表示重复执行倒数第 n 条指令。

$ !-1

uname -a

$ !-3 # 注意,前面的 !-1 也算一条指令,所以倒数第 3 条指令是pwd

方法4ctrl r

ctrl r 这个快捷键可以让你搜索你之前输入过的所有的命令。其实良许更喜欢这个快捷键,因为它会让你看到你将要执行的命令。而如果是 !! 命令的话,它是直接执行最后一条命令。如果这条命令是安全的还好,要是像 rm -rf /* 这样的命令,那就悲剧了。

假如我现在要重复执行 uname -a ,我们可以先按一下 ctrl r 这个组合键,然后再依次敲入 ‘u’ ‘n’ ‘a’ ,如果之前输入的命令比较少的话,基本只需敲一个 u n 就可以找到你要输入的命令了。

(reverse-i-search)`u’: uname -a

找到之后,再敲一下回车,即可重复执行你要输入的命令了。

假如说你要对找到的那条命令进行一些小修改,那么只需敲一下左或右的箭头即可。

方法5ctrl p ctrl n 配合 ctrl o

如果你是懒癌晚期,不想再敲任何字母,只想翻查找到想要的命令并执行,要怎么操作?

前面提到,翻查历史输入的命令,可以使用上下箭头。但这不是最高效的,我们可以使用 ctrl p ctrl n 来达到同样的效果。这样更高效,因为你的手不用抬起来并移动到箭头区。

通过 ctrl p/n 的组合键找到想要的命令之后,我们可以按 ctrl o 来执行这条命令。这个组合键与回车不太相同,因为它除了回车之外,还另外跳转到最后一条命令。通过不断地 ctrl p/n ,然后 ctrl o ,就可以高效的重复执行你要执行的命令了。

Linux中通过expect工具实现脚本的自动交互
 

1.安装expect工具

expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是:

spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成, 退出.

由于expect是基于tcl, 所以需要确保系统中安装了tcl:

# 检查是否安装了tcl:

# 如果没有安装, 使用yum安装tclexpect:

[root@localhost ~]# yum install -y tcl

[root@localhost ~]# yum install -y expect

# 查看expect的安装路径:

 

2.expect的常用命令

命 令

说 明

spawn

启动新的交互进程, 后面跟命令或者指定程序

expect

从进程中接收信息, 如果匹配成功, 就执行expect后的动作

send

向进程发送字符串

send exp_send

用于发送指定的字符串信息

exp_continue

expect中多次匹配就需要用到

send_user

用来打印输出 相当于shell中的echo

interact

允许用户交互

exit

退出expect脚本

eof

expect执行结束, 退出

set

定义变量

puts

输出变量

set timeout

设置超时时间

 

3.作用原理简介

3.1 示例脚本

这里以ssh远程登录某台服务器的脚本为例进行说明, 假设此脚本名称为remote_login.sh:

3.2 脚本功能解读

(1) #!/usr/bin/expect

上述内容必须位于脚本文件的第一行, 用来告诉操作系统, 此脚本需要使用系统的哪个脚本解析引擎来执行.

具体路径可通过command -v expect命令查看.

注意:

这里的expectLinuxbashWindowscmd等程序一样, 都是一种脚本执行引擎.

脚本需要有可执行权限(chmod x remote_login.sh, chmod 755 auto_login.sh), 然后通过命令./remote_login.sh运行即可;

如果输入sh remote_login.sh, 意义就不一样了: 明确调用sh引擎去执行此脚本, 此时首行的#!/usr/bin/expect就失效了.

(2) set timeout 30

设置连接的超时时间为30.

(3) spawn ssh -l root 172.16.22.131

spawnsend等命令是expect工具中的内部命令, 如果没有安装expect工具, 就会出现"spawn not found"等错误.

不要用which spawn之类的命令去找spawn, 因为并没有这样的程序.

(4) expect "password*"

这个命令用来判断上次输出结果里是否包含"password*"的字符串, 如果有则立即返回, 否则就等待一段时间后返回. 这里的等待时长就是前面设置的timeout, 也就是30.

(5) send "123456\r"

这里就是执行交互动作, 作用等同于手工输入密码.

提示: 命令字符串结尾加上\r, 这样的话, 如果出现异常等待的状态就能够停留下来, 作进一步的核查.

(6) interact

expect执行完成后保持用户的交互状态, 这个时候用户就可以手工操作了.

如果没有这一句, expect执行完成后就会退出脚本刚刚远程登录过去的终端, 用户也就不能继续操作了

 

4.其他脚本使用示例

4.1 直接通过expect执行多条命令

注意首行内容, 这种情况下就只能通过./script.sh来执行这类脚本了:

#!/usr/bin/expect -f

 

set timeout 10

# 切换到root用户, 然后执行lsdf命令:

spawn su - root

expect "Password*"

send "123456\r"

expect "]*" # 通配符

send "ls\r"

expect "#*" # 通配符的另一种形式

send "df -Th\r"

send "exit\r" # 退出spawn开启的进程

expect eof # 退出此expect交互程序

 

4.2 通过shell调用expect执行多条命令

注意首行内容, 这种情况下可通过sh script.shbash script.sh ./script.sh, 都可以执行这类脚本:

#!/bin/bash

ip="172.16.22.131"

username="root"

password="123456"

 

# 指定执行引擎

/usr/bin/expect <<EOF

set time 30

spawn ssh $username@$ip df -Th

expect {

"*yes/no" { send "yes\r"; exp_continue }

"*password:" { send "$password\r" }

}

expect eof

EOF



 

5.spawn not found 的解决

出现这个错误的基本上都是出学者: Linux 执行shell脚本有两种方式:

一种是将脚本作为sh的命令行参数, sh remote_login.sh, sh /data/remote_login.sh;

一种是将脚本作为具有执行权限的可执行脚本, ./remote_login.sh, /data/remote_login.sh.

而作为sh命令行参数来运行, 那么脚本第一行的#!/usr/bin/expect就会失效, 所以才会出现spawn not foundsend not found等错误, 所有上面的automate_login.sh脚本必须用以下命令运行:

./automate_expect.sh

 

OSPF中常见的几种LSA类型及其作用
 

LSALink-State Advertisement)链路状态广播,是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。 LSA被路由器接收用于维护它们的路由选择表。在OSPF中,将LSA定义为11种类别,其中常见的有下列6种:

1LSA:路由器LSA.

Router LSA描述了路由器物理接口所连接的链路或接du,指明了链路的状态,代价等.每个OSPF区域内的zhi路由器均会产生第一类LSA.它让路由器彼此认识彼此的链路 接口等.只在产生的区域内泛洪。

2LSA:网络LSA

Network LSA是由DR始发的,它描述了一个广播多路访问网络所有相连的网络和子网,只在产生的区域内泛洪。

3LSA:网络汇总LSA

Network summary LSA是由ABR发出的,它将某个区域的汇总告知其他区域,也就是通知其他区域路由器要到这些网络就找我.这里就有点距离矢量路由协议的味道,依靠下一跳路由器来路由。

4LSAASBR汇总LSA

ASBR Summary LSA ,它也是由ABR发出的,描述了ASBRRID,它是告诉其他区域路由器到某个非OSPF AS外的网络要找通告里告诉的那个ASBR.可以理解为汇总是由ASBR产生但由ABR代为通告出去的.然后由ABR代为转成LSA4发出。

5LSA:自治系统外部LSA

Autonomous system external LSA .,它是由ASBR产生的,用来通告自治系统外部的路由,它在整个OSPF自治系统内泛洪.所以管理员应该尽量在ASBR上进行路由汇总(summary-address 外部汇总网络号 汇总掩码)

7LSANSSA 外部LSA

是指在非纯末梢区域内(not-so-stubby area)ASBR发出的通告外部ASLSA.仅仅在这个非纯末梢区域内泛洪.不能在整个自治系统内泛洪.NSSA网络中的ABR会将这个7LSA转换为5LSA告诉主干区域。

OSPF中DR与BDR的选举规则
 

OSPF中,有两个相当重要的概念:DRBDRDRdesignated router):指定路由器;BDRbackup designated router):备份指定路由器。设置DRBDR的目的在于减少网络中LSA流量的泛洪。

在一个LAN连接中,OSPF将选举出一个路由器做为DR,再选举一个做为BDR,所有其他的和DR以及BDR相连的路由器形成完全邻接状态而且只传输LSA(链路状态通告)DRBDR

换句话说,在一个OSPF的网络中,所有的路由器将被分为两类:指定路由器(DR/BDR)和非指定路由器(DROTHER)。所有的非指定路由器都要和指定路由器建立邻居关系,并且把自己的LAS发送给DR,而其他的OSPF路由器将不会相互之间建立邻居关系。也就是说,OSPF网络中,DRBDRLSDB(链路状态数据库)将会包含有整个网络的完整拓扑。

DR从邻居处转发更新到另外一个邻居那里。DR的主要功能就是在一个LAN内的所有路由器拥有相同的数据库,而且把完整的数据库信息发送给新加入的路由器。路由器之间还会和LAN内的其他路由器(DR/BDR,DROTHERs)维持一种部分邻居关系(two-way adjacency)OSPF的邻接一旦形成以后,会交换LSA来同步LSDB,LSA将进行可靠的洪泛。

DRBDR的选举存在以下特点:

.不会减少Hello报文,较少的DDLSRLSULSAck报文;

.DRother只和DR以及BDR泛洪DDLSRLSU

.DRother之间只互相发送Hello报文;

.DRother之间保持2-Way关系;

.DRBDR负责收集网络LSA

.DR负责向网络中其他DRother通告拓扑信息;

.BDR监控DR运行状态,准备随时取代;

.只存在MA网络。

DRBDR的选举规则如下:

.先比较优先级,默认为1,大的为DR,次大为BDR;优先级0,表示不参与选举;如果两台路由器优先级都为0,则邻居状态为2-Way

.先级相同,比较Router-ID,大的为DR次大为BDR

备注:1.网络初始时,先选出BDRBDR发现网络中没有DR后,把自己变为DR,再选出BDR

备注:2.非抢占性,当网络中已经有了DRBDR,有一台优先级更高的或者RID更高的路由器接入,为了保障网络的稳定,DRBDR不会发生改变。

(1)重启DRBDR或者OSPF进程

(2)把路由器接口的优先级置为0

.当整个网络没有DRBDR存在时,所有的OSPF路由器都会在2-Way状态下,等待一个dead时间(40s)后进行选举;

.当多个MA网络通过交换机互联时,DRDR之间竞选,BDRBDR之间进行竞选;

.在帧中继HubSpoke结构,必须让Hub节点成为DR,最好其他节点不参与选举优先级为0。

扫码添加专属客服

扫码关注公众号