运维知识集合

CentOS8的下载与安装

1`CentOS 8 的下载与安装

小机灵鬼

小机灵鬼

14 人赞同了该文章

我下载的是CentOS8

下载地址:http://mirrors.aliyun.com/centos/8.2.2004/isos/x86_64/

在这里面有很多版本,可以根据他们的区别自行下载需要的版本:

CentOS-8.2.2004-x86_64-dvd1.iso 标准安装版,一般下载这个就可以了(推荐)

CentOS-8.2.2004-x86_64-minimal.iso 精简版,自带的软件最少

img

打开Vmware,选择文件-新建虚拟机,在弹出窗口选择自定义

img

然后会弹出如下页面,直接下一步即可

img

安装来源选择稍后安装

img

客户机操作系统选择Linux,版本选择CentOS 8 64位

img

改一下虚拟机名称和位置,然后点击下一步

img

处理机配置按默认的来就可以了,点击下一步

img

虚拟机内存,这里按他配置好的来即可,这里大家容易有一个误区:内存大运行就快,这种想法是错误的!因为如果内存给的过大,可能运行会比较卡。

img

选择网络连接

如果你的物理机(电脑)在局域网就选择第一个桥接网络;

如果物理机处于连网状态(上网),就选择第二个;

如果物理机是无连网(不使用网络状态),选择第三个。

img

接下来就下一步下一步就好了

img

img

img

img

img

点击完成

img

接下来就该加载镜像文件了,打开CD/DVD

img

在弹窗里选择使用ISO映像文件,找到之前下载好的.iso文件地址,然后点击确定

img

然后在这里点击开启此虚拟机

img

开启之后选择第一项 install CentOS8,第二项说的是:“测试安装的光盘镜像并安装CentOS 8 Troubleshooting 修复故障,修复无法正启动的Linux系统时的时候使用。选好之后等待弹出如下窗口,选择使用语言

image-20221019185259429

img

点击有黄色感叹号的地方

img

如上图所示,安装向导已经自动提供了“键盘布局”、“时间和日期”、“安装来源”和“软件选择”的选项。

“安装来源”—-

在软件选择选项中选择安装的模式。例如“包含图形界面”选项会在安装后的系统中提供图形界面,而如果想安装尽可能少的额外软件,可以选择“最小化安装”。
在这里插入图片描述

这里我们选择“包含图形界面”,点击“完成”。
Kdump 功能默认是开启的。尽管这是一个强烈建议开启的功能,但也可以点击对应的图标将其关闭。
如果想要在安装过程中对网络进行配置,可以点击“网络与主机名”选项。
在这里插入图片描述

如果系统连接到启用了 DHCP 功能的调制解调器上,就会在启动网络接口的时候自动获取一个 IP 地址。如果需要配置静态 IP,点击“配置”并指定 IP 的相关信息。除此以外我们还将主机名设置为 “linuxxxxx.com”。

完成网络配置后,点击“完成”。

最后我们要配置“安装目标”,指定 CentOS 8 将要安装到哪一个硬盘,以及相关的分区方式。

存储配置选择自定义-左上角Done

img

点击红色框框起来的地方-

img

这里直接点击完成就可以-左上角Done

img

image-20221019185821764

点击接受更改

img

修改密码-root-

—User Creation-创建合适的用户

image-20221019190112558

点击安装,然后等着就好了

img

密码我设置的root,根据个人习惯自行设置

img

点击完成配置

img

这时候已经没有黄色感叹号了,咱们就可以直接点击重启

img

在 GRUB 引导菜单中,选择 CentOS 8 进行启动。
在这里插入图片描述

同意 CentOS 8 的许可证,点击“完成”。
在这里插入图片描述

在下一个界面,点击“完成配置”。
在这里插入图片描述

进入欢迎页面,点击前进按钮

img

选择跳过

img

这里自己起一个名字就好了

img

再输入用一下刚刚设置的密码

img

ok 一切准备就绪,现在就可以使用了

img

登录一下就ok啦

img

发布于 2020-12-03 16:11

2`一键提交git-bat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
rem 设置默认值
set content="%date% %time%: Updated By MuyanGit"
set /p content= 输入本次提交的内容,不建议省略:

git add .

rem 提交更新
git commit -m %content%

rem 推送到服务端
rem git push

git push origin master --force && echo 执行成功 || echo 执行失败


pause

bat打印日期

1
echo "%date:~0,4%%date:~5,2%%date:~8,2%"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
#author Oliver
#since 2020-09-03 15:24:31

#git remote rm origin
#replace your git location
#git remote add origin 'https://github.com/**********'
git pull remote master
git add .
#执行shell脚本,可以传一个参数 $1 是git 的提交的msg:./shell.sh "提交代码"
git commit -m $1
git push origin master --force
#执行成功
if [ "$?" = "0" ]
then
echo -e "\033[42;34m push to github success! \033[0m"
else
echo -e "\033[41;30m push to github fail! \033[0m"
exit 1
fi

3·centos常用命令

1` history 命令

随着我在终端中花费越来越多的时间,我感觉就像在不断地寻找新的命令,以使我的日常任务更加高效。GNU 的 history 命令是一个真正改变我日常工作的命令。

GNU history 命令保存了从该终端会话运行的所有其他命令的列表,然后允许你重放或者重用这些命令,而不用重新输入它们。如果你是一个老玩家,你知道 history 的力量,但对于我们这些半吊子或新手系统管理员来说, history 是一个立竿见影的生产力增益。

历史 101

要查看命令历史,请在 Linux 中打开终端程序,然后输入:

1
$ history

这是我得到的响应:

1
2
3
4
5
6
7
1  clear

2 ls -al

3 sudo dnf update -y

4 history

history 命令显示自开始会话后输入的命令列表。 history 有趣的地方是你可以使用以下命令重放任意一个命令:

中间不能有空格

1
$ !3

提示符中的 !3 告诉 shell 重新运行历史列表中第 3 个命令。我还可以输入以下命令来使用:

1
linuser@my_linux_box: !sudo dnf

history 将搜索与你提供的模式相匹配的最后一个命令,并运行它。

搜索历史

你还可以输入 !! 重新运行命令历史中的最后一条命令。而且,通过与grep 配对,你可以搜索与文本模式相匹配的命令,或者通过与 tail 一起使用,你可以找到你最后几条执行的命令。例如:

image-20221019194820241

1
2
3
4
5
6
7
8
9
10
11
12
13
$ history | grep dnf

3 sudo dnf update -y

5 history | grep dnf

$ history | tail -n 3

4 history

5 history | grep dnf

6 history | tail -n 3

另一种实现这个功能的方法是输入 Ctrl-R 来调用你的命令历史记录的递归搜索。输入后,提示变为:

1
(reverse-i-search)`':

现在你可以开始输入一个命令,并且会显示匹配的命令,按回车键执行。

更改已执行的命令

history 还允许你使用不同的语法重新运行命令。例如,如果我想改变我以前的命令 history | grep dnfhistory | grep ssh,我可以在提示符下执行以下命令:

1
$ ^dnf^ssh^

history 将重新运行该命令,但用 ssh 替换 dnf,并执行它。

删除历史

有时你想要删除一些或全部的历史记录。如果要删除特定命令,请输入 history -d <行号>。要清空历史记录,请执行 history -c

历史文件存储在一个你可以修改的文件中。bash shell 用户可以在他们的家目录下找到 .bash_history

下一步

你可以使用 history 做许多其他事情:

◈ 将历史缓冲区设置为一定数量

◈ 记录历史中每行的日期和时间

◈ 防止某些命令被记录在历史记录中

有关 history 命令的更多信息和其他有趣的事情,请参考 GNU Bash 手册[1]。

2· useradd - Centos8用户管理,如何添加用户?

学神来啦

学神来啦

linux kali 资料 和笔记 xuegodcn

1 人赞同了该文章

用户一般来说是指系统的使用者,使用者可以使用这些名称来登录使用计算机,除了使用者之外,一些系统服务也需要含有部分特权的用户账户运行;因此出于安全考虑,用户管理应运而生,它加以明确限制各个用户账户的权限,root在计算机中用拥有至高特权,所以一般只作管理用,非特权用户可以通过SU或SUDO程序来临时获得特权。
Linux系统通过用户和用户组实现访问控制,包括对文件访问、设备使用的控制。
1人可以拥有很多账户,只不是彼此名称不同,比如root名称已经占用就不能再用了,此外,任意用户可能从属某个用户组,此用户可以加入某些已经存在的组来获得该组的特权。
每1个文件的属性中都有一个文件拥有者和所属组。另外,还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组、而设置相应的访问权限。再次,我们可以通过 ll或 stat命令查询文件属主、属组和权限。

1
2
3
4
5
6
7
8
[root@xuegod63 ~]# ll | tail-2
-rw-------. 1 root root 1374 3月 12 17:34 anaconda-ks.cfg
-rw-r--r--. 1 root root 1529 3月 12 18:10 initial-setup-ks.cfg
[root@xuegod63 ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"
大小:1680 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:16797763 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)

用户的分类

Linux用户三种角色:超级用户,普通用户,虚拟用户。

超级用户: root 拥有对系统的最高的管理权限,UID=0

普通用户:

系统用户 UID范围:1-999(centos7/8版本) 1-499(centos6版本)

本地用户 UID范围:1000+(centos7/8版本) 500+(centos6版本)

UID:即每个用户的身份标示,类似于每个人的身份证号码.

虚拟用户:伪用户 一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如:ftp,apache

用户基本信息保存位置:/etc/passwd

下图是用户和组的关系:

一对一:一个用户可以存在一个组中; 一对多:一个用户可以存在多个组中

多对一:多个用户可以存在一个组中; 多对多:多个用户可以存在多个组中

img

配置文件

img

用户命令

命令:useradd

useradd -d -u “UID” -g “初始组” -G “附加组” -s “登陆的shell” 用户

-u: 指定uid

-d: -d 用户主目录路径, 可以指定用户家目录

-M: 不创建用户的家目录

-g:设置用户初始组的名称或数字ID;该组必须是存在的;如果没有设置该选项,useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认USERGROUPS_ENAB yes 会用和用户名相同的名字创建群组.

-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附属组)

-s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装,默认是 Bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。

将shell设置成 /sbin/nologin 就可以禁止用户登录。

更多技术干货尽在公众号【学神来啦】!

添加登录用户

例:添加一个名为harry的用户,并使用bash作为登录的shell

1
2
3
[root@xuegod63 ~]# useradd harry
[root@xuegod63 ~]# tail -1 /etc/passwd
harry:x:1001:1001::/home/harry:/bin/bash

说明:此命令会自动创建harry组,并成为harry用户的默认主组,同时默认的登录shell是bash

用户帐户的全部信息被保存在/etc/passwd文件。这个文件以如下格式保存了每一个系统帐户的所有信息 (字段以“:”分割)

img

harry:x:1001:1001::/home/harry:/bin/bash #每行含意如下:

harry:用户名

x:密码占位符

1001:用户的UID,使用正整数表示,范围可以是0-65535

1001:用户所属组的GID,它都是用数字来表示的

用户描述信息:对用户的功能或其它来进行一个简要的描述,此字段会出现在登录用户界面,可以通过点击输入对应密码进行登录,却并不能手动输入此字段代替用户名。

/home/harry:用户主目录(shell命令提示符中用“~”表示)

/bin/bash:用户登录系统后使用的shell

例:查看系统中,支持哪些shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@xuegod63 ~]# cat /etc/shells    #查看系统中,支持哪些shell
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
再安装一种名叫zsh的shell
[root@xuegod63 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/bin/zsh
/bin/zsh
[root@xuegod63 ~]# yum install zsh -y
[root@xuegod63 ~]# zsh
[root@xuegod63]~# cd /etc/sysconfig/network-scripts
[root@xuegod63]/etc/sysconfig/network-scripts# 注:zsh这种shell会显示绝对路径的

指定用户UID :

1
2
3
4
5
6
7
8
useradd  -u 用户ID
[root@xuegod63 ~]# useradd -u 1100 oracle
[root@xuegod63 ~]# id oracle
uid=1100(oracle) gid=1100(oracle) 组=1100(oracle)
[root@xuegod63 ~]# tail -1 /etc/passwd
oracle:x:1100:1100::/home/oracle:/bin/bash
[root@xuegod63 ~]# ls -a /home/oracle/
. .. .bash_logout .bash_profile .bashrc .mozilla

指定用户主目录

1
2
3
4
[root@xuegod63 ~]# useradd  -d /opt/ftp ftp1
[root@xuegod63 ~]# ls -a /opt/ftp
[root@xuegod63 ~]# tail -1 /etc/passwd
ftp1:x:1101:1101::/opt/ftp:/bin/bash

指定用户的主组

例:

1
2
3
4
5
6
[root@xuegod63 ~]# useradd  xuegod
[root@xuegod63 ~]# id xuegod
uid=1103(xuegod) gid=1103(xuegod) 组=1103(xuegod)
[root@xuegod63 ~]# useradd -g xuegod xuegod2
[root@xuegod63 ~]# id xuegod2
uid=1104(xuegod2) gid=1103(xuegod) 组=1103(xuegod)

指定用户的附加组

我们也可以把这个附属组称为补充组,用户可以有0个或多个附加组的成员

如果一个组有多个成员,我们是可以在/etc/group文件中最后一个字段看到的

1
2
3
4
5
[root@xuegod63 ~]# useradd  -G xuegod,oracle,root xuegod3
[root@xuegod63 ~]# id xuegod3
uid=1105(xuegod3) gid=1105(xuegod3)
组=1105(xuegod3),0(root),1001(harry),1103(xuegod)
[root@xuegod63 ~]# vim /etc/group

img

这份Linux实战内容火了,完整版mp.weixin.qq.com/s?__biz=MzkxNTI1OTc4MA==&mid=100009974&idx=1&sn=f3e141165ac2c782048f2719700676e9&chksm=41634f1d7614c60b2243a7757959fc703f76385531c386f2604a0044d6b62f2718330a78794c#rdimg

创建用户的另外一个命令

1
2
3
4
5
6
7
8
[root@xuegod63 ~]# adduser xuegod4
[root@xuegod63 ~]# id xuegod4
uid=1106(xuegod4) gid=1106(xuegod4) 组=1106(xuegod4)
[root@xuegod63 ~]# which adduser
/usr/sbin/adduser
[root@xuegod63 ~]# ll /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 9月 19 2017 /usr/sbin/adduser -> useradd
注: adduser是useradd的软链接

删除用户

语法: userdel [options] 用户名

选项:-r 删除的时候,会同时删除用户的家目录和/var/mail下的目录

1
[root@xuegod63 ~]# userdel -r  xuegod3

密码的文件

1
2
3
[root@xuegod63 ~]# head -3  /etc/shadow
root:$6$C88LCVx5ZjfBU7xv$cKcdyNeTFmOYTs9NbRZDTA4hGcbMXc/5hQEWZKCtNyLqlBagrjct.pMfs39iEaF1UbEvcOzWZHMDf9Q
5KojXM1::0:99999:7:::

img

格式如下:

name 登录名称,这个必须是系统中的有效账户名

password 已加密密码,分为三个部分,第一部分是表示使用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希

哈希算法:$1表示MD5 ; $6 表示SHA512 ; $5 表示SHA256

查看帮助说明: man 5 查看文件格式,man 3查看库函数

man 5 passwd

man 5 shadow

man 5 group

lastchange 最近一次更改密码的日期,以距离1970/1/1的天数表示

min-age 不能更改密码的最少天数,最近更改过后几天才可以更改;如果为0表示“最短期限要求”

maxage 密码过期时间,必须更改密码前的最多天数

warning 密码即将到期的警告期,以天数表示,0表示“不提供警告”

inactive 宽限天数,密码到期后

expire 账号过期时间,以距离1970/1/1的天数计算 (千年虫)

blank 预留字段

给用户添加密码:

1
2
3
4
5
6
7
8
[root@panda home]# passwd oracle       #交互式修改密码
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@xuegod63 ~]# echo 123456 | passwd --stdin xuegod #不交互
[root@xuegod63 ~]# echo 123456 | passwd --stdin harry

添加用户规则

控制添加用户规则文件的两个文件:/etc/default/useradd 和 /etc/login.defs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@panda home]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999 #用户密码最长使用时间,多少天后会有提醒
PASS_MIN_DAYS 0 #用户密码最短使用时间,意思是多少天内不能修改密码,0为不限制
PASS_MIN_LEN 5 #用户密码最小长度
PASS_WARN_AGE 7 #密码过期后会提醒多少天,这些天内还没有修改密码的用户,账户会被冻结
UID_MIN 1000 #用户ID开始的数字
UID_MAX 60000 #用户ID结束的数字
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000 #组ID结束的数字
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #是否为用户建立home目录
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 #shadow文件的加密算法

[root@panda home]# cat /etc/default/useradd
/etc/default/useradd 文件中的内容如下:
GROUP=100 #新创建用户时默认初始组的GID号(公共组),现在使用的都

是私有组机制(根据创建用户名称创建组)

1
2
3
4
5
6
HOME=/home     # /home表示用户家目录的位置
INACTIVE=-1 #是否启用帐号过期。passwd文件中第7列,-1表示不启用
EXPIRE= #帐号终止日期 shadow中第8字段,你可以直接设定账号在哪个日期后就直接失效,而不理会密码的问题。
SHELL=/bin/bash #默认shell使用哪个
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否创建邮箱文件

命令:chage 了解一下, 后期记不住时,可以直接vim修改shadow文件

1
2
3
4
5
-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-W:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期,为0表示强制在下次登录时更新密码

例:修改用户xuegod密码信息:让这个用户xuegod首次登录系统时必须更改其密码

1
2
3
4
5
6
7
[root@xuegod63 ~]# chage -d 0 xuegod
[root@xuegod63 ~]# ssh xuegod@192.168.1.63
...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.63' (ECDSA) to the list of known hosts.
mk@192.168.1.63's password: 123456
You must change your password now and login again! #提示必须改密码

更改用户 xuegod的密码 。

互动: 两个用户的UID可以一样吗?

1
2
3
4
5
6
[root@xuegod63 ~]# vim /etc/passwd  # 改 xuegod uid为0
xuegod:x:0:0:xuegod:/home/mk:/bin/bash
[root@xuegod63 ~]# su - xuegod
上一次登录:二 9月 19 22:03:16 CST 2017:0 上
[mk@xuegod63 ~]# id xuegod
uid=0(mk) gid=0(root) 组=0(root),10(wheel)

查看用户相关命令:

1
2
3
4
5
#id  用户和组的信息
#whoami   #查看当前有效用户名
#who #显示目前登入系统的用户信息。
#w # w命令用于显示已经登陆系统的用户列表
#users #用于显示当前登录系统的所有用户的用户列表

修改用户信息

语法:usermod 【参数】用户名

常用参数:

1
2
3
4
5
6
-u  UID
-d 宿主目录
-g 起始组 #只能有一个
-G 附加组 #可以有多个
-s 登录shell
-L 锁定

例1:修改UID

1
2
3
4
5
[mk@xuegod63 ~]# id oracle
uid=1100(oracle) gid=1100(oracle) 组=1100(oracle)
[mk@xuegod63 ~]# usermod -u 1111 oracle
[mk@xuegod63 ~]# id oracle
uid=1111(oracle) gid=1100(oracle) 组=1100(oracle)

例2:修改shell

img

例3:更改用户主目录

1
[root@panda home]# usermod -m -d /opt/aaa xuegod

-m选项会自动创建新目录并且移内容到新目录里面

例4:添加用户描述信息

1
2
3
[root@xuegod63 ~]# usermod -c "hello world" xuegod
[root@xuegod63 ~]# grep xuegod /etc/passwd
mk:x:1000:1000:hello world:/opt/aaa:/bin/bash

总结:如果你记不住命令, 那么直接改vim /etc/passwd 一样的。

解决模板文件被删之后显示不正常的问题

1
2
3
4
5
6
7
8
9
10
[root@xuegod63 ~]# useradd xuegod88 && echo 123456 | passwd --stdin xuegod88
[root@xuegod63 ~]# echo 123456 | passwd --stdin xuegod88
[root@xuegod63 ~]# rm -rf /home/xuegod88/.bash*
[root@xuegod63 ~]# su - xuegod88
[xuegod88@xuegod63 ~]$
[xuegod88@xuegod63 ~]$
-bash-4.2$ exit #在centos6或7会出现这个不完整的shell提示符,如何处理?
[root@xuegod63 ~]# cp /etc/skel/.bash* /home/xuegod88/
[root@xuegod63 ~]# chown xuegod88:xuegod88 /home/xuegod88/.bash*
[root@xuegod63 ~]# su - xuegod88
Linux云计算/LINUX/Linux运维/从入门到精通-带你走进Linux的世界www.bilibili.com/video/BV1c44y1h7GL/

3· sed 命令

Linux公社 2019-08-25 08:59

Linux流编辑器是在数据中心中运行脚本的一种有用方法。通过这些命令示例,您可以开始熟悉sed。

想要修改文件而不覆盖原始文件的Linux管理员有很多选择,但最有效的工具之一是流编辑器 - sed。

流编辑器是大多数Linux发行版的默认部分。它使您能够使用Linux sed命令在操作系统中执行文本文件操作。

与大多数Linux应用程序一样,sed可以处理管道输入,这使它成为一种有效的脚本工具。您可以将其用作基本的查找和替换工具,如下面的示例命令所示,该命令查找出现的一个实例,并将其替换为两个实例。命令以 /g结束。

sed ‘s/one/two/g’ linuxidc linuxmi

图片

例如,这个Linux sed命令可以帮助您定位和创建配置文件的新版本。当这些函数作为脚本的一部分运行时,它们是可重复的和一致的,并且您可以快速实现更改。

但是sed的主要目的是更改文本文件的内容。它使用了一些重要的命令行开关。/s表示搜索,该命令以/g分隔。-i开关在适当的位置上运行命令——它直接修改文件。

sed -i ‘s/Port 22/Port 10000/g’ /etc/ssh/sshd_config

图片

在此示例中,/etc/ssh/sshd_config文件中Secure Shell服务器中使用的端口号从默认端口22更改为端口10000。

使用Linux sed命令进行文件更改

可以使用sed编辑文件,但有点不满意。 ad hoc编辑可能会导致问题,因为sed无法访问完整的源代码,也无法识别错误或拼写错误。 此外,这样做会使原始文件处于危险之中,因为一旦您更改了原始代码,就无法恢复原始代码。

您可以使用-e开关一次指定多个更改。 同样,sshd_config.conf文件使得更改多行变得简单。 下面的脚本可能看起来很复杂,但操作系统只是传递多个sed更改数据包,每个数据包前缀为-e。

使用sshd_config文件,您可以更改端口号,禁用密码身份验证并一步启用公钥身份验证。

sed -i -e ‘s/Port 22/Port 10000/g’ -e ‘
s/PermitRootLogin yes/PermitRootLogin no/g’ -e ‘
s/PasswordAuthentication yes/PasswordAuthentication no/g’ -e ‘
s/#PasswordAuthentication no/#PasswordAuthentication no/g’ /etc/ssh/sshd_config

图片

搜索和替换功能在新的一行; 用\分解命令不起作用,因为sed将其视为特殊字符。

结合sed中的提示

您还可以将多个Linux sed命令链接在一起以更改应用程序的位置。 手动修改文件路径有很大的错误空间,但自动化它可以使生活更轻松。

用作分隔符的反斜杠可能不适用于某些脚本,但sed允许您更改分隔符。 例如,假设您有一个名为example.conf的日志文件,其中包含以下内容:

logpath = /var/log/mylogfile.log

将此路径更改为/my/alternate/path/newlog.log,您可以使用|作为分隔符,因为/在文件系统路径中不起作用。

sed -i ‘s|/var/log/mylogfile.log|/my/alternate/path/newlog.log|g’ example.conf

使用Linux sed命令的其他方法包括使用^#MyComment为搜索模式添加前缀; 这会搜索以#MyComment开头的行。 您可以在输出端使用它,以便创建一个新行来替换现有的一行。 您还可以使用$字符在行尾查找内容。

要查看更高级的示例,请使用man sed命令。 它提供了更详细的命令和语法分解。

发布于 2021-12-02 15:18

p 命令,用来打印文件内容

(一) 打印整个文本,n 命令,仅显示 script 处理后的结果,不加 n 命令,会把待处理的信息也输出。

1
2
3
4
5
[root]# sed -n p test.txt
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(二) 打印第一行到最后一行的内容。1表示第一行, $表示最后一行。

1
2
3
4
5
[root]# sed -n "1,$"p test.txt
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(三) 过滤带 to 的行, 类似于 grep 命令。

1
2
3
4
[root]# sed -n "/to/"p test.txt
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer

(四) 打印匹配 kevin 开始,frank 为结束的行。

1
2
3
[root]# sed -n "/kevin/,/frank/"p test.txt
kevin likes to eat cabbage
frank likes to drink beer

s 命令,用于替换

(一)将 kevin 替换成 kkk。

1
2
3
4
5
[root]# sed  "s/kevin/kkk/g" test.txt
tom likes to play football
kkk likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(二) 只针对第二行进行判断。

1
2
3
4
5
[root]# sed  "2s/kevin/xxx/g" test.txt
tom likes to play football
xxx likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(三) 针对多行进行替换。

1
2
3
4
5
[root]# sed  "1,4s/kevin/xxx/g" test.txt
tom likes to play football
xxx likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(四) 只替换第1个 to 为 tt 。

1
2
3
4
5
[root]# sed "s/to/tt/1" test.txt
ttm likes to play football
kevin likes tt eat cabbage
frank likes tt drink beer
cary doesn't like smoking

(五) 只替换第 2 个 to。

1
2
3
4
5
[root]# sed "s/to/tt/2" test.txt
tom likes tt play football
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(六) 开头加点东西(注释)。

1
2
3
4
5
[root]# sed "s/^/\/\/ /" test.txt
// tom likes to play football
// kevin likes to eat cabbage
// frank likes to drink beer
// cary doesn't like smoking

(七) 末尾加点东西。

1
2
3
4
5
[root]# sed "s/$/  \/\/ comment /" test.txt
tom likes to play football // comment
kevin likes to eat cabbage // comment
frank likes to drink beer // comment
cary doesn't like smoking // comment

img

欣赏一张美丽的风景照,雪景还真不错哈!!继续往下看。

c 命令,用于行替换

(一) 将第二行的内容替换 hehe。

1
2
3
4
5
[root]# sed "2 c hehe" test.txt
tom likes to play football
hehe
frank likes to drink beer
cary doesn't like smoking

(二) 仅仅替换有 tom 的行。

1
2
3
4
5
[root]# sed "/tom/c cat" test.txt
cat
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

i 命令, 表示行插入

(一) 在第一行前面插入。

1
2
3
4
5
6
[root]# sed "1 i love you" test.txt
love you
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(二) 在最后一行前面插入。

1
2
3
4
5
6
[root]# sed "$ i love you" test.txt
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer
love you
cary doesn't like smoking

a 命令, 用于依附

(一) 在第一行后依附。

1
2
3
4
5
6
[root]# sed "1 i love you" test.txt
love you
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(二) 在最后一行后依附。

1
2
3
4
5
6
[root]# sed "$ i love you" test.txt
tom likes to play football
kevin likes to eat cabbage
frank likes to drink beer
love you
cary doesn't like smoking

d 命令,删除所匹配的行

(一) 删除有kevin的行。

1
2
3
4
[root]# sed "/kevin/d" test.txt
tom likes to play football
frank likes to drink beer
cary doesn't like smoking

(二) 删除第 1 行。

1
2
3
4
[root]# sed "1d" test.txt
kevin likes to eat cabbage
frank likes to drink beer
cary doesn't like smoking

(三) 删除第 2-4 行。

1
2
[root]# sed "2,4d" test.txt
tom likes to play football
絮叨

4· zcat

Linux命令之zcat(16)

原创 小农 码农新锐 2022-10-06 14:43 发表于北京

收录于合集

#Linux常用命令19个

#linux20个

-

-

1
2
3
4
5
6

zcat命令可以在不真正解压文件的情况下查看到文件内容;
zcat将命令行中列出的文件或由标准输入输入的数据解压,解压后的数据写到标准输出;
zcat解压具有正确标志头的文件,而不管其是否带有.gz后缀;
zcat与运行gunzip -c命令完全相同

1、功能说明

-

1
用于查看压缩文件的内容

2、语法格式

-

1
zcat [选项][文件]

3、选项解释

-

-

-

-

-

-

1
2
3
4
5
6
7
8
9
10
11
12

-S 当后缀不是标准压缩包后缀时使用此选项
-c 将文件内容写到标注输出
-d 执行解压缩操作
-l 显示压缩包中文件的列表
-L 显示软件许可信息
-q 禁用警告信息
-r 在目录上执行递归操作
-t 测试压缩文件的完整性
-V 显示指令的版本信息
-1 更快的压缩速度
-9 更高的压缩比

4、参考实例

  • 显示压缩包内文件的内容

1
2
3

[root@xiaonong ~]$ zcat spring.log.2022-10-05.0.gz
当文件大时,可以配合less、more、head、grep等使用
  • 显示多个压缩包内文件的内容

1
2
[root@xiaonong ~]$ zcat spring.log.2022-10-05.0.gz spring.log.2022-10-04.0.gz

  • 查看指定文件的压缩信息(压缩大小,未压缩大小,比率 ,压缩率)

1
2
3
[root@xiaonong ~]$ zcat -l apache-maven-3.6.3-bin.tar.gz
compressed uncompressed ratio uncompressed_name
9506321 11326976 16.1% apache-maven-3.6.3-bin.tar
  • 查看普通文件的内容

1
[root@xiaonong ~]$ zcat -l apache-maven-3.6.3-bin.tar.gz
  • 禁止所有警告

1
[root@xiaonong ~]$ zcat -q apache-maven-3.6.3-bin.tar.gz
  • 测试压缩文件等完整性

1
[root@xiaonong ~]$ zcat -t apache-maven-3.6.3-bin.tar.gz
  • 查看压缩文件的内容,并将内容输入到指定文件

1
[root@xiaonong ~]$ zcat apache-maven-3.6.3-bin.tar.gz > test.txt
  • 显示指令等版本信息

1
2
3
4
5
6
7
8
9
10

[root@xiaonong ~]$ zcat -V apache-maven-3.6.3-bin.tar.gz
gzip 1.5
Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1993 Jean-loup Gailly.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by Jean-loup Gailly.
  • 显示软件许可信息

1
2
3
4
5
6
7
8

[root@xiaonong ~]$ zcat -L apache-maven-3.6.3-bin.tar.gz
gzip 1.5
Copyright (C) 2007, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1993 Jean-loup Gailly.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

5 scp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1、从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)

例如scp root@192.168.0.101:/var/www/test.txt /var/www/local_dir 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2、上传本地文件到服务器
scp /path/filename username@servername:/path

例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3、从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

例如:scp -r root@192.168.0.101:/var/www/test /var/www/

4、上传目录到服务器
scp -r local_dir username@servername:remote_dir
例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录

文章知识点与官方知识档案匹配,可进一步学习相关知识

4· IP修改-力求精简-如无必要,勿增实体

1·CentOS 8 如何修改IP地址

宝藏男孩工作室

宝藏男孩工作室

记录日常生活点滴。所思所想所做所闻所听所看。

1、首先打开需要编辑网络的配置文件

img

2、编辑配置文件内容

img

注:文件里的UUID以及带IPv4和IPv6的行可以删除掉,无用~

3、重启网络 CentOS 8怎么重启网卡呢?

重启网卡之前一定要重新载入一下配置文件,不然不能立即生效:

img

重启网络的命令· 使用下面三条的命令中的一条命令即可:

1
2
3
4
5
nmcli c up 网卡名

nmcli d reapply 网卡名

nmcli d connect 网卡名
1
2
3
#旧版本的:
systemctl restart NetworkManager #centOS8
service network restart #centOS7

总结:重启CentOS Linux 8的网卡,先载入新的配置文件,然后再执行重启网卡命令即可。

注:CentOS 8各个系统版本的网卡名称不一样,可以这样操作 如下图所示:

img

创作不易,喜欢小编的内容就点歌关注再走吧~ 爱你们❤

发布于 2022-03-10 19:34

2·`基于RHEL8/CentOS8的网络IP配置详解

知乎用户1hi0bK

32 人赞同了该文章

➡ 在rhel8(含centos8)上,没有传统的network.service,在/etc/sysconfig/network-scripts/里也看不到任何脚本文件,那么该如何进行网络配置呢。
➡ 本文详细阐述基于rhel8的网络配置,包含多种配置方法。
➡ 事先声明:本文提及的所有内容,仅适用rhel8/centos8,因为不同linux系统的NetworkManager行为存在部分差异。

小慢哥的原创文章,欢迎转载


目录

▪ rhel8与7的区别

▪ NetworkManager介绍

▪ nmcli使用方法

▪ nmcli常用命令一览

▪ nmcli connection重点

▪ nmcli device重点

▪ 3种网络配置方法

▪ Tips

rhel8与7的区别

在rhel7上,同时支持network.service和NetworkManager.service(简称NM)。默认情况下,这2个服务都有开启,但许多人都会将NM禁用掉。

在rhel8上,已废弃network.service,因此只能通过NM进行网络配置,包括动态ip和静态ip。换言之,在rhel8上,必须开启NM,否则无法使用网络。

rhel8依然支持network.service,只是默认没安装,详见本文最后的Tips。

NetworkManager介绍

NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置ip地址。

类似在手机上同时开启wifi和蜂窝网络,自动探测可用网络并连接,无需手动切换。

虽然初衷是针对无线网络,但在服务器领域,NM已大获成功。

NM能管理各种网络

▷ 有线网卡、无线网卡

▷ 动态ip、静态ip

▷ 以太网、非以太网

▷ 物理网卡、虚拟网卡

使用方法

▷ nmcli:命令行。这是最常用的工具,本文将详细讲解该工具使用。

▷ nmtui:在shell终端开启文本图形界面。示意图见本文最后的Tips

▷ Freedesktop applet:如GNOME上自带的网络管理工具

▷ cockpit:redhat自带的基于web图形界面的”驾驶舱”工具,具有dashborad和基础管理功能。示意图见本文最后的Tips

为什么要用NM

▷ 工具齐全:命令行、文本界面、图形界面、web

▷ 广纳天地:纳管各种网络,有线、无线、物理、虚拟

▷ 参数丰富:多达200多项配置参数(包括ethtool参数)

▷ 一统江湖:RedHat系、Suse系、Debian/Ubuntu系,均支持

▷ 大势所趋:下一个大版本的rhel只能通过NM管理网络

nmcli使用方法

nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全(详见本文最后的Tips),也可在命令最后通过-h、–help、help查看帮助。在nmcli中有2个命令最为常用:

nmcli connection

译作连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c

nmcli device

译作设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d

在NM里,有2个维度:连接(connection)设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过nmcli c up切换连接。

connection有2种状态

▷ 活跃(带颜色字体):表示当前该connection生效

▷ 非活跃(正常字体):表示当前该connection不生效

device有4种常见状态

▷ connected:已被NM纳管,并且当前有活跃的connection

▷ disconnected:已被NM纳管,但是当前没有活跃的connection

▷ unmanaged:未被NM纳管

▷ unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ethX down)

nmcli常用命令一览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 查看ip(类似于ifconfig、ip addr)
nmcli

# 创建connection,配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动)
nmcli c add type ethernet con-name ethX ifname ethX ipv4.addr 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual

# 创建connection,配置动态ip(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动)
nmcli c add type ethernet con-name ethX ifname ethX ipv4.method auto

# 修改ip(非交互式)
nmcli c modify ethX ipv4.addr '192.168.1.200/24'
nmcli c up ethX

# 修改ip(交互式)
nmcli c edit ethX
nmcli> goto ipv4.addresses
nmcli ipv4.addresses> change
Edit 'addresses' value: 192.168.1.200/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli ipv4> save
nmcli ipv4> activate
nmcli ipv4> quit

# 启用connection(相当于ifup)
nmcli c up ethX

# 停止connection(相当于ifdown)
nmcli c down

# 删除connection(类似于ifdown并删除ifcfg)
nmcli c delete ethX

# 查看connection列表
nmcli c show

# 查看connection详细信息
nmcli c show ethX

# 重载所有ifcfg或route到connection(不会立即生效)
nmcli c reload

# 重载指定ifcfg或route到connection(不会立即生效)
nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX
nmcli c load /etc/sysconfig/network-scripts/route-ethX

# 立即生效connection,有3种方法
nmcli c up ethX
nmcli d reapply ethX
nmcli d connect ethX

# 查看device列表
nmcli d

# 查看所有device详细信息
nmcli d show

# 查看指定device的详细信息
nmcli d show ethX

# 激活网卡
nmcli d connect ethX

# 关闭无线网络(NM默认启用无线网络)
nmcli r all off

# 查看NM纳管状态
nmcli n

# 开启NM纳管
nmcli n on

# 关闭NM纳管(谨慎执行)
nmcli n off

# 监听事件
nmcli m

# 查看NM本身状态
nmcli

# 检测NM是否在线可用
nm-online

本文提及的ifcfg均指代/etc/sysconfig/network-scripts/ifcfg-ethX及/etc/sysconfig/network-scripts/route-ethX

nmcli connection重点

nmcli c show

▪ 第一列是connection名字,简称con-name(注意con-name不是网卡名)

▪ 第二列是connection的UUID

▪ 最后一列才是网卡名(标准说法叫device名),可通过nmcil d查看device

对connection做操作时需要指定标识,标识可以是con-name、UUID、如果存在ifcfg文件则也可以用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ethX

1
2
3
nmcli c show ethX
nmcli c show cae3f1ef-e79a-46c3-8e0c-946b91a65e11
nmcli c show /etc/sysconfig/network-scripts/ifcfg-ethX

nmcli c的con-name

同时对应ifcfg的文件名以及内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候,nmcli c delete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过nmcli c up来将指定连接切换生效。

注意:通过nmcli c modify修改con-name,只会对应修改ifcfg文件中的NAME,而不会更改ifcfg文件名。

nmcli c的ipv4.method

对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp,这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。

例子:创建一个连接(connection)

1
nmcli c add type ethernet con-name ethX-test ifname ethX ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual

▪ type ethernet:创建连接时候必须指定类型,类型有很多,可以通过nmcli c add type -h看到,这里指定为ethernet。

▪ con-name ethX ifname ethX:第一个ethX表示连接(connection)的名字,这个名字可以任意定义,无需和网卡名相同;第二个ethX表示网卡名,这个ethX必须是在nmcli d里能看到的。

▪ ipv4.addresses ‘192.168.1.100/24,192.168.1.101/32’:配置2个ip地址,分别为192.168.1.100/24和192.168.1.101/32

▪ ipv4.gateway 192.168.1.254:网关为192.168.1.254

▪ ipv4.dns ‘8.8.8.8,4.4.4.4’:dns为8.8.8.8和4.4.4.4

▪ ipv4.method manual:配置静态IP

对应的ifcfg和dns就是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# /etc/sysconfig/network-scripts/ifcfg-ethX-test
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.1.100
PREFIX=24
IPADDR1=192.168.1.101
PREFIX1=32
GATEWAY=192.168.1.254
DNS1=8.8.8.8
DNS2=4.4.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ethX-test
UUID=9a10ad89-437c-4caa-949c-a394a6d28c8d
DEVICE=ethX
ONBOOT=yes

# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 4.4.4.4

此时,通过nmcli c应该可以看到增加了一条连接

注意:如果这是为ethX创建的第一个连接,则自动生效;如果此时已有连接存在,则该连接不会自动生效,可以执行nmcli c up ethX-test来切换生效

nmcli device重点

nmcli d connect ethX

由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。

nmcli d disconnect ethX

让NM暂时不管理指定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。

nmcli d reapply ethX

专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。

nmcli d set ethX autoconnect yes|no managed yes|no

可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态, 如果这2个参数都设置为no,然后重启系统,又会自动恢复成connected和managed yes的状态。所以该命令用途不大。注意事项:如果managed设置为no,那么nmcli c reload会读取配置文件,但是不会立即生效,接着如果执行nmcli c up ethX,就会立即生效,同时managed自动变为yes。

重启系统自动恢复成connected和managed yes的状态,这种逻辑并不实用也不够合理,笔者已将此问题提交给redhat,据回复,这么设计是因为目前没有一个有效的手段来证明“我是我”,比如当网卡重新拔插到其他插槽时候,网卡名有很大可能性会发生变化,因此无法确定关机前设置的是对应开机后的哪个网卡,目前暂无办法解决,笔者将持续跟进。

3种网络配置方法

在讲3种配置方法前,需要先明白ifcfg和NM connection的关联:虽然network.service被废弃了,但是redhat为了兼容传统的ifcfg,通过NM进行网络配置时候,会自动将connection同步到ifcfg配置文件中。也可以通过nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX的方式来让NM读取ifcfg配置文件到connection中。因此ifcfg和connection是一对一的关系,另外上面有提到,connection和device是多对一的关系。

在rhel8上,有3种方法进行网络配置

▷ 1. 手工配置ifcfg,通过NM来生效

▷ 2. 通过NM自带工具配ip,比如nmcli

▷ 3. 手工配置ifcfg,通过传统network.service来生效

建议:

推荐使用上述第1种网络配置方法(手工配置ifcfg,通过NM生效),因为这样既兼容了传统的ifcfg配置,又能熟悉nmcli。举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
EOF

nmcli c reload
# nmcli c up eth0 # 如果之前没有eth0的connection,则上一步reload后就已经自动生效了

这么做有2个好处:

▷ 按官方建议使用NM而不是network.service

▷ 当还不太熟悉nmcli命令时候,这样最稳妥

Tips

1. nmcli命令支持tab补全,但是需要yum install bash-completion

2. 如果希望NM不要纳管网卡,只有一个办法最彻底最靠谱,就是自己写ifcfg,内容加上NM_CONTROLLED=no,这样该device的状态就会始终保持unmanaged。nmcli c up、nmcli c reload、nmcil c load都不会对其起任何作用。

3. NM只能对link状态为up的网卡进行操作,如果手动ip link set ethX down,那么NM就无法对该网卡做任何操作(即使nmcli d connect也没有用)。

4. 可以通过yum install network-scripts来安装传统的network.service,不过redhat说了,在下一个rhel的大版本里将彻底废除,因此不建议使用network.service。

5. 手工创建新的ifcfg或者在ifcfg里修改ip等配置,NM不会自动读取,需要手工执行nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX。这一点可能和其他系统的NM行为不太一样,但这种做法实则更适合服务器。

6. 不手工配置ifcfg,使用默认的dhcp情况下,网卡的增减是不会自动生成ifcfg,此时nmcli c看到的con-name将类似’System ethX’或者’Wired connection 1’。

7. NetworkManager支持3种获取dhcp的方式:dhclient、dhcpcd、internal,当/etc/NetworkManager/NetworkManager.conf配置文件中的[main]部分没配置dhcp=时候,默认使用internal(rhel7/centos7默认是dhclient)。internal是NM内部实现的dhcp客户端。

8. 关于手动指定网关ip的方法,经过实测,/etc/sysconfig/network中的GATEWAY仅在3种情况下有效:NM_CONTROLLED=noipv4.method manual从ipv4.method manual第一次转到ipv4.method auto时候。建议:当NM_CONTROLLED=no时,将网关写在/etc/sysconfig/network(GATEWAY);当使用NM时候,使用nmcli c命令配置网关(比如nmcli c modify ethX ipv4.gateway 192.168.1.1)。

9. NM默认会从dhcp里获取dns信息,并修改/etc/resolv.conf,如果不想让NM管理/etc/resolv.conf,则只需在/etc/NetworkManager/NetworkManager.conf里的[main]里增加dns=none即可。

10. 如果想让NM不要自动管理新网卡(比如不要给新网卡获取ip地址),则只需在/etc/NetworkManager/NetworkManager.conf里的[main]里增加no-auto-default=*即可,改完后通过systemctl restart NetworkManager或者重启系统来生效。除了手工在NetworkManager.conf里加配置,也可以yum install NetworkManager-config-server,这会生成/usr/lib/NetworkManager/conf.d/00-server.conf,内容为如下截图。建议使用前者方案,因为后者的ingore-carrier是不被推荐的参数。

11. 更多NetworkManager参数详见man NetworkManager.conf

12. nmtui示意图:

img

13. cockpit示意图:

img

在rhel8.0 beta时候,必须要先将浏览器语言设置为英语,才可以使用,如果为中文,在登陆后是空白页面。笔者已将该bug提交给redhat,据回复会在RHEL8.0正式版修复,笔者将持续跟进。

发布于 2019-02-16 19:02

3·VMware虚拟机 NAT模式 配置静态ip

img

hellocsz 2018-09-10 11:17:57 img 4002 img 收藏 1

前言:Ubuntu 16.04 VMware虚拟机 NAT模式 配置静态ip,这个问题困扰我好长时间,桥接的静态ip我会了,然而用NAT 的方式配置集群会更好。(NAT 方式客户机之间的通讯不经过路由器),所以想着换成NAT方式会更好。

要使用NAT方式设置静态ip ,需要相当多的计算机网络知识了。

第一先查看你的主机的网卡是否把网络共享给虚拟网卡vmnet8 了吗? 打开网络共享中心———>更改适配器设置 看下图 然后右击 你用的那个网卡。我用的无线。所以右击 无线网络连接———>属性——>共享——在选择框里选上 vmnet8网卡。 这个作用就是 无线网卡和 虚拟机的网卡对接上 主机 和 虚拟机就是通过vmnet8 这个虚拟网卡进行通讯的。这个 知识很重要。

img

1 首先要知道,主机给 vmnet8 网卡分配的ip 看下图。

img

这个ip 就是虚拟机 配置静态ip时的网关,记住!!!!!!!这点很重要。

2 打开vm软件——》编辑——》虚拟网络编辑器

img

4·NAT网关设置为 2 的原因是:按照顺序 1已经占用了–如下图:

image-20221018201232065

img

最终的效果类似如下(这里面有刚才主机分配的IP)

img

3 进行虚拟机配置文件设置

我的系统是ubuntu 16.04 lts ,CentOS的系统找相应的网卡配置文件就可以。

kong@root:sudo /etc/network/interfaces

进行以下修改

img

4 进行dns 设置

kong@root:sudo vim /etc/resolvconf/resolvconf.d/head

将 nameserver 8.8.8.8 写进去 保存退出 网卡重启。或者虚拟机重启

然后ping www.linuxidc.com 看看能不能ping通

5·1 CentOS8开启SSH服务

1、首先安装SSH服务

1
yum install openssh-server

Centos8下修改ssh端口号

1
2
3
4
5
vi etc/ssh/sshd_config

然后按 i 进入插入模式
将光标移动到#Port 20的下面
输入Port 端口号
2、启动SSH服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

#### 遇见的问题 Failed to start sshd.service: Unit sshd.service not found. 转载
#sudo apt install openssh-server
#systemctl enable ssh.service
#service sshd start


然后输入
setenforce 0

重新启动sshd文件
systemctl restart sshd
systemctl stop sshd
systemctl start sshd
systemctl status sshd


备注:
关闭防火墙
systemctl stop firewalld.service
永久关闭
systemctl disable firewalld.service
······································································································································································································································
关闭selinux
临时关闭
setenforce 0
sed· -ri '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
#sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

禁止开机自启,永久关闭
进入到/etc/selinux/config 文件

vi /etc/selinux/config
设置SELINUX = disabled
最后重启一下 reboot
可以用sed命令修改,sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config



bash semanage: 未找到命令
yum -y install policycoreutils-python

bash netstat 未找到命令
yum -y install net-tools验证netstat命令是否可用...查看全部


在这里插入图片描述

3、查看SSH服务状态

1
systemctl status sshd

4、查看端口

1
2
netstat -antp | grep sshd

5、加入开机启动

1
2
systemctl enable sshd

6.SSH其他常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#启动sshd服务
systemctl start sshd

#停止sshd服务
systemctl stop sshd

#重启sshd服务
systemctl restart sshd

#查看sshd服务的状态
systemctl status sshd

#sshd服务开机启动
systemctl enable sshd

#sshd服务禁止开机启动
systemctl disable sshd

#锁定sshd服务
systemctl mask sshd

#解锁sshd服务
systemctl unmask sshd

#重新加载sshd服务的配置文件
systemctl reload sshd

  

5·2 CentOS安装SSH服务及linux集群

姬雨晨

2 人赞同了该文章

CentOS8.2

查看SSH是否安装

rpm -qa | grep ssh

yum list installed | grep openssh-server

img

img

卸载SSH:yum remove openssh-server

安装SSH:

yum install openssh-server

yum install openssh-clinet

启动ssh服务

[root@localhost ~]# systemctl stop sshd

[root@localhost ~]# systemctl start sshd

查看SSH服务是否正在运行

[root@localhost ~]# systemctl status sshd

[root@localhost ~]# ps -e | grep sshd

img

img

使用ssh客户端登录

命令: ssh name@server

ssh root@10.1.1.1

开机自启动

将sshd服务添加之自启动列表中

[root@localhost ~]# systemctl enable sshd 等价于 systemctl enable sshd.service

并查看是否开启自启动sshd服务

systemctl list-unit-files | grep sshd

img

SSH的配置文件在/etc/ssh/目录下,

其中服务端的配置文件是sshd_config , 客户端的配置文件是ssh_config。

OpenSSH服务器配置 vi /etc/ssh/sshd_config 文件重要参数以及作用

img

3.CentOS集群实现ssh免密钥登陆

这里使用3台主机

/etc/udev/rules.d/70-persistent-ipoib.rules 网卡信息配置(不用管)

/etc/sysconfig/network-scripts/ifcfg-ens33 设置自动联网

/etc/hosts 设置db1~db3的主机名与ip的绑定,并修改主机的hostname

img

免密钥 :A-B

生成密钥 :用超级管理员身份执行:su ssh-keygen -t rsa

img

私钥留给自己

ssh-copy-id localhost

公钥发送给其他节点

ssh-copy-id bd2

ssh-copy-id bd3

img

设置之后服务器之间可免密码直接登录

img

centos 空闲一段时间后自动断网

用客户端工具,例如securecrt连接linux服务器,有的会出现过一段时间没有任何操作,客户端与服务器就断开了连接。 造成这个的原因,主要是因为客户端与服务器之间存在路由器,防火墙以及为了本身的安全性,在超过特定的时间后就会把空闲连接断开。或者是服务器端设置了断开空闲连接。

服务器端修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默认为0),参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接,使用systemctl reload sshd.service 让其修改后生效。如果发现还是有问题,可以试着把300设置小一点,例如60。

CentOS6.5命令

开启SSH服务:

停止SSH服务命令(service sshd stop);

重启SSH服务命令(service sshd restart)

查看SSH服务是否正在运行

输入命令:service sshd status

[重启后可输入:netstat -antp | grep sshd 查看是否启动22端口]

检查sshd是否在本运行级别下设置为开机启动

输入命令:chkconfig –list sshd

设置SSH服务为开机启动

输入命令:chkconfig sshd on 即可

注:若是 chkconfig sshd off 则禁止SSH开机启动。

5`3 SSH服务默认端口为22,修改默认端口为10022

1.vim /etc/ssh/sshd_config 将port端口修改为10022

img

2.重新启动sshd守护进程

systemctl restart sshd.service 重新启动服务,提示”Bind to port 10022 on 0.0.0.0 failed: Permission denied.”

img

经查阅资料,发现selinux未关闭所致

查看selinux状态 getenforce 处于enforcing状态

img

关闭selinux setenforce 0 此命令为零时关闭,永久关闭,需要修改/etc/selinux/config配置文件

可以用sed命令修改,sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config

再次重启sshd服务

3.远程连接主机

ssh 10.0.0.4 10022 依旧连接失败

img

检查firewall服务状态,为开启状态。关闭防火墙服务 systemctl stop firewalld.service,永久关闭防火墙,systemctl disable firewalld.service

img

再次尝试连接主机,连接成功

img

总结

影响ssh服务的有selinux和主机防火墙,selinux导致无法正常修改端口,主机防火墙导致网络无法接通。因此在部署服务前,关闭selinux和防火墙

5·4 Centos7 配置 SSH 服务

一、首先确认 Centos7 是否已安装 ssh服务

一般情况下,centos自带ssh服务

使用命令行 yum list installed | grep ssh 来查询
如果显示:
img
则说明安装ssh服务。

如果没有安装,则先需要安装ssh服务,

使用命令行yum install openssh-server
一路Y确认

二、配置SSH

ssh默认端口是22
使用 root 用户进入 /etc/ssh/ 目录: cd /etc/ssh/ (切换到root用户,使用 su 命令)
使用 vi/vim 打开 sshd_config 文件: vim sshd_config
默认是22端口,将配置文件里的 #注释 释放,(想要哪个设置生效,就删除前面的 #)

1
2
3
4
5
6
7
8
9
10
11
12
13
yum install openssh-server
su #切换到root
cd /etc/ssh/
vim sshd_config



PermitRootLogin yes #是否允许root用户登录
PermitEmptyPasswords no #是否允许空密码
PasswordAuthentication yes #是否允许密码验证
AllowUsers xxxxx #允许xxxxx用户登录
ecs
wq # 保存退出

三、 防火墙打开22端口

1
2
3
4
5
6
7
firewall-cmd --zone=public --add-port=22/tcp --permanent	#向防火墙中添加端口
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效
firewall-cmd --reload #使防火墙规则生效
firewall-cmd --zone=public --query-port=22/tcp #查看端口是否添加成功:
firewall-cmd --list-ports #查看防火墙开放的端口

四、启用ssh服务

1
2
service sshd restart 		        #重启ssh服务
service sshd start #启动ssh服务

五、检查是否启动ssh服务(以下通用)

1
2
netstat -antup|grep ssh		#查询-antup(列出ssh相关地址。用IP地址显示TCP/UDP连线状况,正在使用Socket的程序识别码和程序名称)
netstat -lnp|grep 22 #查询-lnp(用ip显示出正在使用端口22的程序名称或识别码)

六、 开机启动ssh服务

用root用户修改

1
2
3
4
systemctl enable sshd				        #开机启动sshd服务
systemctl list-unit-files |grep ssh #检查是否开机启动
systemctl stop sshd #停止sshd服务
systemctl disable sshd #禁用开机启动sshd服务

七、更改SSH端口

用root用户修改
port 22 改为 8112

1
2
3
4
5
6
7
8
9
10
vim /etc/ssh/sshd_config                                        #ssh配置文件
service sshd restart #重启ssh服务
netstat -lnp|grep 8112 #检查8112端口是否开启

#如果无法连接,需修改selinux
semanage port -l|grep ssh #查询selinux给ssh开放了什么端口
semanage port -a -t ssh_port_t -p tcp 8112 #添加8112端口
semanage port -l|grep ssh #检查是否添加成功
service sshd restart #重启ssh服务
netstat -lnp|grep 8112 #检查8112端口是否开启

如果无效,参照第三步放行防火墙

5· 一键快速修改windows系统的IP和DNS

onme0

onme0

概述

一键快速修改windows系统的IP和DNS采用执行xx.bat文件方式,那么xx.bat文件该如何编写呢?本期文章向各位小伙伴总结分享。

2· 实战演练——如何通过命令修改windows系统的IP和DNS

第1步:采用管理员权限打开命令提示符(CMD),如下图所示(windows10操作系统);

img

第2步:在命令提示符中输入“netsh”,然后,输入“interface ip”,如下所示;

C:\Users\007>netsh

netsh>

netsh>interface ip

netsh interface ipv4>

第3步:在“netsh interface ipv4>”视图中,输入命令“show interface”查询系统的可用的网卡信息从而获取网卡的名称,如下图所示;

img

第4步:在“netsh interface ipv4>”视图中,输入命令set address “Ethernet0” dhcp和set dns “Ethernet0” dhcp,配置网卡Ethernet0自动获取IP地址和DNS地址,默认情况下,永久保存。如下图所示;

img

第5步:查看网卡IP地址和DNS地址的配置效果,在“netsh interface ipv4>”视图中,输入命令show address “Ethernet0”和show dns “Ethernet0”,如下图所示;

img

以上是关于windows系统自动获取IP和DNS的配置方式,那么如何配置静态的IP地址和DNS地址呢?

Windows系统配置静态IP地址和DNS地址的方式,如下图所示;

img

备注:

Windows10系统提供的示例——IP地址配置方式:

set address name=”Wired Ethernet Connection” source=dhcp

set address “Wired Ethernet Connection” static 10.0.0.9 255.0.0.0 10.0.0.1 1

Windows10系统提供的示例——DNS地址配置方式:

set dnsservers name=”Wired Ethernet Connection” source=dhcp

set dnsservers “Wired Ethernet Connection” static 10.0.0.1 primary

实战演练——如何一键修改windows系统的IP和DNS

一键修改Windows系统的IP和DNS——DHCP自动获取

把以下两条命令复制到文本文档中,并另外为dhcp.bat。(管理员权限运行dhcp.bat)

Ethernet0是系统网卡名称,需要通过命令netsh interface ipv4 show interface提前查询获得。

1
2
3
netsh interface ipv4 set address "WLAN" dhcp

netsh interface ipv4 set dns "WLAN" dhcp

另存为dhcp.bat方式,如下图所示;

img

一键修改Windows系统的IP和DNS——静态配置

把以下两条命令复制到文本文档中,并另外为static.bat。(管理员权限运行static.bat)。其中,IP地址:192.168.1.100、掩码:255.255.255.0、网关:192.168.1.254、DNS地址:223.5.5.5。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
rem pushd C:\WINDOWS\system32
:: #设置环境变量目录,如bat保存于桌面,无此命令可能无法调用环境变量

netsh interface ip set address name="WLAN" source=static address=192.168.1.10 mask=255.255.255.0 gateway=192.168.1.1
#设置静态IP,更改网络连接名称为"WLAN",ip设置为192.168.1.10,子网为255.255.255.0,网关为192.168.1.1

netsh interface ip add dns name="WLAN" address=192.168.1.1
#设置静态dns为192.168.1.1
netsh interface ip add dns name="WLAN" address=192.168.0.1
#增加静态dns为192.168.0.1
pause
#批处理最后加上pause,防止bat运行后自动闪退关闭,可以查看是否有运行错误信息




netsh interface ipv4 set address "WLAN" static 192.168.1.10 mask=255.255.255.0 gateway=192.168.1.1


netsh interface ipv4 set dns "WLAN" address=192.168.1.1
@rem 设置静态dns为192.168.1.1

netsh interface ipv4 add dns "WLAN" static 192.168.0.1
@rem 增加静态dns为192.168.0.1


1
2
3
4
5
6
7
简写:
netsh interface ipv4 set address "WLAN" static 192.168.0.170 255.255.255.0 192.168.1.1

netsh interface ipv4 set dns "WLAN" static 192.168.0.1

netsh interface ipv4 add dns "WLAN" static 192.168.0.1

6```桌面版本 centos8 –快捷键

6` CENTOS-8 使用快捷键打开终端

右键打开设置>>键盘>>自定义快捷键,然后点+

img

名称:随便填写

命令:*/usr/bin/gnome-terminal*

快捷键:点击一下Set Shortcut,然后在键盘上按下想要的快捷键

img

添加成功

img

关闭窗口后,使用快捷键即可打开命令行窗口

7`

7` CentOS7修改主机名的三种方法

在CentOS7中,有三种定义的主机名:

静态的(Static hostname)

“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。

瞬态的(Tansient hostname)

“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。

灵活的(Pretty hostname

“灵活”主机名也有人叫做“别名”主机名。
“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如xh01@f5)。
“静态”主机名和“瞬态”主机名都遵从作为互联网域名同样的字符限制规则。

在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。

查看主机名:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 1 //查看一下当前主机名的情况,查看全部三种主机名
2
3 hostnamectl
4
5 //或者,查看全部三种主机名
6
7 hostnamectl status
8
9 //只查看静态、瞬态或灵活主机名,分别使用--static,--transient或--pretty选项
10
11 [root@xh00 ~]# hostnamectl --static
12
13 xh00
14
15 [root@xh00 ~]# hostnamectl --transient
16
17 xh01
18
19 [root@xh00 ~]# hostnamectl --pretty
20
21 //或者,查看到的是瞬态的(Tansient hostname)
22
23 hostname
24
25 //或者查看主机名配置文件,查看到的是静态的(Static hostname)
26
27 cat /etc/hostname

查看当前Linux操作系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等):

1
2
3
1 uname -a            //查看到的是瞬态的(Tansient hostname)
2
3 cat /etc/redhat-release //查看操作系统环境

修改主机名:

方法1:临时有效

hostname 主机名 //只能临时修改的主机名,当重启机器后,主机名称又变回来了。

1
1 hostname xh01

方法2:永久生效

//永久性的修改主机名称,重启后能保持修改后的。

1
2
hostnamectl set-hostname  HiCentos7
重启之后正常
1
2
3
4
5
6
1 hostnamectl set-hostname xxx 
2
3 //删除hostname
4 hostnamectl set-hostname ""
5 hostnamectl set-hostname "" --static
6 hostnamectl set-hostname "" --pretty

修改所有三个主机名:静态、瞬态和灵活主机名:

1
2
3
4
5
6
[root@localhost ~]# hostnamectl set-hostname xh00
[root@localhost ~]# hostnamectl --pretty
[root@localhost ~]# hostnamectl --static
xh00
[root@localhost ~]# hostnamectl --transient
xh00

就像上面展示的那样,在修改静态/瞬态主机名时,任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。

一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你每次在修改主机名后一定要手

动更新/etc/hosts,之后再重启CentOS 7。否则系统再启动时会很慢。

手动更新/etc/hosts

1
2
3
4
5
6
7
8
9
1 vim /etc/hosts
2
3 #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
4
5 127.0.0.1 qqmm
6
7 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
8
9 ::1 qqmm

重启CentOS 7

1
reboot -f 

重启之后

1
2
3
4
5
6
7
1 [root@qqmm ~]# hostname
2
3 xh01
4
5 [root@qqmm ~]# hostnamectl
6
7 xh01

xh01如果你只想修改特定的主机名(静态,瞬态或灵活),你可以使用--static--transient--pretty选项。 例如,要永久修改主机名,你可以修改静态主机名:

1
[root@localhost ~]# hostnamectl --static set-hostname xh01

重启CentOS 7 之后

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# hostnamectl --static

xh01

[root@localhost ~]# hostnamectl --transient

xh01

[root@localhost ~]# hostnamectl --pretty

[root@localhost ~]# hostname

xh01

方法3:永久生效

修改配置文件/etc/hostname来实现主机名的修改。把该文件内容hostname name中的name替换成自己想要的主机名重启即可。

1
2
3
4
5
6
7
8
9
vim /etc/hostname 
hostname HiCentos7

vi /etc/sysconfig/network 添加IP和hostname对应关系

10.238.162.33 Slave01

重启reboot生效

方法4:永久生效

通过nmtui修改,之后重启hostnamed

1
2
nmcli general hostname servername
systemctl restart systemd-hostnamed

还可以通过nmtui进入图形界面来修改主机名。将光标通过键盘的上下键移动到“设定系统主机名”菜单处,按下回车键。

img

此时,屏幕出现“设定主机名”选项卡,输入需要设定的主机名,通过键盘方向键将光标移动到“确定”处,回车键确定即可完成主机名的修改。

img

来源https://blog.csdn.net/xuheng8600/article/details/79983927

Zabbix –使用

介绍

image-20221020115120910

自动化-注册发现报警

监控方便-现成的模板

image-20221020115304467

比较

image-20221020115346307

架构

image-20221020115711231

部署方式

image-20221020115745730

对象

image-20221020115830848

2· Zabbix installation configuration 安装配置

安全需求

image-20221020120114630

环境要求

image-20221020120225480

查看版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
https://www.zabbix.com/download?zabbix=6.2&os_distribution=centos&os_version=7&components=proxy&db=mysql&ws=

查看CentOS版本方法
有以下命令可以查看:

命令1:
rpm -q centos-release
结果为:

centos-release-7-7.1908.0.el7.centos.x86_64
命令2:
lsb_release -a
这个命令适用于所有的linux,包括RedhatSuSEDebianCentos等发行版。
结果为:

LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.7.1908 (Core)
Release: 7.7.1908
Codename: Core
命令3:
结果为:

uname
结果为:

Linux
命令4:
name -a
结果为:

Linux localhost 3.10.0-1062.9.1.el7.x86_64 #1 SMP Fri Dec 6 15:49:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
好文要顶 关注我 收藏该文

image-20221020121034093

不愿意关闭—nginx官网设置,selinux也是需要设置

image-20221020121153208

配置

image-20221020121325655

客户端测试机与master在同一个机器

image-20221020121505122

默认密码-默认80端口

image-20221020121606887

centos8更换阿里源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49


码农笔录

2020-10-28 11:53:56 发布

48089
收藏 1
分类专栏: linux 文章标签: linux centos
版权

linux
专栏收录该内容
27 篇文章0 订阅
订阅专栏
原文连接 https://www.aiprose.com/blog/134

1.如果是minimal安装,需要先安装wget


yum install -y wget
1
2
2.备份旧的配置文件


mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
1
2
3.下载阿里的源文件


centos8的
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
centos7的
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
1
2
4.如果你不是阿里云的服务器,例如自己电脑安装或者虚拟机安装,需要修改地址

sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
1
5.生成缓存


yum makecache
1
2
文章知识点与

001—安装脚本–注意提前换源-阿里就行

1
2
3
4
5
6
7
8
9
10
11
12
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum -y install zabbix-server-mysql
yum -y install zabbix-proxy-mysql
yum -y install zabbix-web-mysql
yum -y install mariadb-server
systemctl start mariadb
mysql -uroot -e "create database zabbix"
sed 's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uroot zabbix
setenforce 0
systemctl start zabbix-server

尝试修改脚本

···

1
2
3
4
5
6
7
8
9
10
11
12
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum -y install zabbix-server-mysql
yum -y install zabbix-proxy-mysql
yum -y install zabbix-web-mysql
yum -y install zabbix-agent
yum -y install mariadb-server
systemctl start mariadb
mysql -uroot -e "create database zabbix character set utf8 collate utf8_bin;"
sed 's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uroot zabbix
setenforce 0
systemctl start zabbix-server
检查安装结果
1
2
3
4
ps -ef|grep zabbix



image-20221020145140493

1
2
3
4
5
6
7
8
9
10
11
12
13
14
数据库以及配置成功的可以使用这个进行演示

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum -y install zabbix-server-mysql
yum -y install zabbix-proxy-mysql
yum -y install zabbix-web-mysql
yum -y install mariadb-server
systemctl start mariadb
#mysql -uroot -e "create database zabbix"
sed 's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uroot zabbix
setenforce 0
systemctl start zabbix-server

002—启动zabbix server web 端

1
2
3
[root@localhost zabbix-server-mysql-3.4.15]# service httpd start
systemctl start httpd.service
Redirecting to /bin/systemctl start httpd.service

···

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
检查80 端口是否开启 监听
[root@localhost zabbix-server-mysql-3.4.15]# netstat -lntp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 2460/zabbix_server
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2277/mysqld
比如这里有80端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2744/httpd
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 768/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 854/master
tcp6 0 0 :::10051 :::* LISTEN 2460/zabbix_server
tcp6 0 0 :::23 :::* LISTEN 768/sshd
tcp6 0 0 ::1:25 :::* LISTEN 854/master

003· 关闭selinux与关闭防火墙-网络畅通

1
2
3
4
5
6
7
8
9
10
11
12
备注:
关闭防火墙
systemctl stop firewalld.service
永久关闭
systemctl disable firewalld.service
······································································································································································································································
关闭selinux
临时关闭
setenforce 0
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
#sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

004· 修改php时区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  文件
/etc/httpd/conf.d/zabbix.conf
esc
显示行号
:set nu
19

# php_value date.timezone Europe/Riga
修改为:
php_value date.timezone Asia/Shanghai

重启网络
systemctl restart httpd
检查状态
systemctl status httpd

设置数据库密码
mysql
show databases;
首先需要进入mysql,修改root用户密码,不然mysql不能使用
use mysql;
修改root用户密码
update user set password=password("1") where user="root";
刷新权限,
flush privileges;
增加zabbix账户,并修改密码,注意一定要修改密码
1为密码
mysql -uroot -p1
13.创建一个zabbix数据库

create database zabbix character set utf8 collate utf8_bin;
use zabbix
创建一个zabbix用户:
create user zabbix@localhost identified by '1';
给zabbix授权所有:
grant all privileges on zabbix.* to zabbix@localhost;
刷新:
flush privileges;

四、zabbix配置初始化
1、配置数据库连接信息
编辑配置文件 /etc/zabbix/zabbix_server.conf,找到以下字段,去掉前面的#号,填入正确的zabbix数据库连接信息,保存并退出文件
/etc/zabbix/zabbix_server.conf








需要添加备注
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;

use zabbix;
update user set password=password("1") where user="zabbix";
flush privileges;

5导入初始架构和数据,系统将提示您输入新创建的密码----脚本安装时候已经执行完毕

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

image-20221020151843747

未开启 agent-查看监听的端口- 配置-host

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
显示没有端口
netstat -lntp|grep 10050
yum -y install zabbix-agent
systemctl start zabbix-agent
再次查询端口
点击禁用--> 启用
点击启用--> 禁用
[root@localhost zabbix-server-mysql-3.4.15]# netstat -lntp|grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3226/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 3226/zabbix_agentd
[root@localhost zabbix-server-mysql-3.4.15]# netstat -lntp|grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 3002/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 3002/zabbix_server




image-20221020161312046

image-20221020161426088

image-20221020162456857

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
文件脚本上传
查询是否安装
[root@localhost ~]# rpm -qa lrzsz
lrzsz-0.12.20-36.el7.x86_64
[root@localhost ~]# yum -y install lrzsz


a. Install Zabbix repository 安装zabbix镜像源

rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/7/x86_64/zabbix-release-6.2-3.el7.noarch.rpm
yum clean all

yum install epel-release

b. 安装Zabbix server,Web前端,agent
yum -y install zabbix-server-mysql zabbix-agent

yum -y install zabbix-server-mysql
#没有这个
yum -y install zabbix-web-mysql
#没有这两个
# yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl

安装 Install Zabbix frontend
yum install centos-release-scl
编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository.

[zabbix-frontend]
...
enabled=1
...

Install Zabbix frontend packages.


3.下载mysql数据库
yum install mariadb mariadb-server
4.启动数据库,并配置zabbix账户
mysql
show databases;
首先需要进入mysql,修改root用户密码,不然mysql不能使用
use mysql;
修改root用户密码
update user set password=password("1") where user="root";
刷新权限,
flush privileges;
增加zabbix账户,并修改密码,注意一定要修改密码
1为密码
mysql -uroot -p1
create database zabbix character set utf8 collate utf8_bin;

需要添加备注
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;

use mysql;
update user set password=password("1") where user="zabbix";
flush privileges;


5导入初始架构和数据,系统将提示您输入新创建的密码

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

为Zabbix server配置数据库,编辑配置文件 /etc/zabbix/zabbix_server.conf




systemctl restart mariadb




yum -y install mariadb-server
systemctl start mariadb
mysql -uroot -e "create database zabbix"
sed 's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf
zcat /usr/share/doc/zabbix-server-mysql-3.4.8/create.sql.gz | mysql -uroot zabbix
setenforce 0
systemctl start zabbix-server




dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent -y




修改mysql的密码

image-20221020134014210

刷新权限

image-20221020134125654

image-20221020134353374

maria db

image-20221020134941655

image-20221020121725097

CentOS 7上搭建 Zabbix4.0,一次性成功,收藏了!

民工哥img

8 人赞同了该文章

img

zabbix介绍

Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。它能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix软件组成

zabbix-server: 监控服务端

zabbix-agent: 监控客户端

zabbix-web: 监控网站服务

php: 处理动态请求

mysql: 数据库存储监控数据

zabbix: 负责收集agent信息汇总告知zabbix-server

1.关闭防火墙和selinux

1
2
3
[root@zabbix ~]# setenforce 0
[root@zabbix ~]# sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
[root@zabbix ~]# systemctl stop firewalld ; systemctl disable firewalld

2.添加zabbix源和epel源

1
2
3
4
5
[root@zabbix ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.2/rhel/7/x86_64/zabbix-release-6.2-3.el7.noarch.rpm ##这里使用的是清华源


[root@zabbix ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo ##添加epel源

3.安装zabbix和相关服务组件

1
2
3
4
5
[root@zabbix ~]# wget  https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.2/rhel/7/x86_64/{zabbix-server-mysql-4.0.20-1.el7.x86_64.rpm,zabbix-web-4.0.22-1.el7.noarch.rpm} ##把这两个包先拿下来,因为安装的时候网络问题会出现安装超时
[root@zabbix ~]# yum install -y httpd php zabbix-server-mysql-4.0.20-1.el7.x86_64.rpm zabbix-web-mysql ###安装zabbix的服务程序和web程序
[root@zabbix ~]# yum install -y mariadb-server ##安装数据库服务


4.修改zabbix配置文件

1
2
[root@zabbix ~]# sed -ri.bak '/# DBPassword=/cDBPassword=zabbix' /etc/zabbix/zabbix_server.conf ##修改zabbix数据库密码为zabbix
[root@zabbix ~]# sed -ri.bak 's/ #(.*)date.timezone.*/\1date.timezone Asia\/Shanghai/' /etc/httpd/conf.d/zabbix.conf ##修改时区为国内

5.配置数据库服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[root@zabbix ~]# systemctl start mariadb #启动数据库
[root@zabbix ~]# mysql_secure_installation ##初始化数据库

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] n
... skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@zabbix ~]# mysql -uroot -p ##登录数据库
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.65-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; ##创建zabbix数据库
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; ##创建数据库管理用户
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.20/create.sql.gz | mysql -uzabbix -pzabbix zabbix ##将数据表写入到zabbix库中

6.启动zabbix和相关服务

1
2
3
4
5
[root@zabbix ~]# systemctl start zabbix-server.service httpd mariadb.service
[root@zabbix ~]# systemctl enable zabbix-server.service httpd mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

7.登录zabbix的web界面,进行初始化

初始化地址http://172.16.210.56/zabbix/setup.php

img

点击Next step

img

检查php的一些变量条件,如果没有报错的信息可以点击next step

img

填写好对应的数据库密码和帐号点击Next step

img

设置主机和端口还有监控页面名字,然后点击Next step

img

确认信息.然后点击Next step

img

点击Finish

img

帐号Admin 密码zabbix ,再点Sign in

img

登录成功。

8.更改zabbix界面语言为中文

点击右上角的小人

img

选择Chinese

img

再点击update

img

更改成功!

来自:简书,作者:南南宫问天
链接:https://www.jianshu.com/p/7d798423e

2· zabbix—Web页面介绍

image-20221020162844966

image-20221020163105689

image-20221020163043300

image-20221020163704645

image-20221020163553259

image-20221020163842811

image-20221020164008261

Zabbix basic use 基本使用

1·自动发现

1
2
3
4
5
主机只要装zabbix-client

配置上zabbix-server地址

主机只要装zabbix-client(启动后)自动纳入zabix-server监控范围

image-20221020164521788

1· check-检查主机有没有重复-以及相关的配置

image-20221020164904970

image-20221020165355830

可以筛选与禁用

image-20221020165423976

2·自动报警

image-20221020165521357

image-20221020173936029

2·1 报警条件设置

Configuration—Actions-add

image-20221020174926840

operation

image-20221020174800021

ADD-new

image-20221020175401526

image-20221020175953803

修改单独邮件报警

image-20221020180709635

image-20221020180938422

2·2 配置发送报警-邮件短信等

image-20221020180248618

image-20221020180431960

已经单独设置邮件报警之后:

image-20221020180843274

2·3· zabbix接受报警

image-20221020181434307

用户-接受的邮箱手机号配置

image-20221020181530914

image-20221020181839304

2·4 图标配置折线图-磁盘

image-20221020183048198

可以筛选组的

image-20221020183550191

image-20221020183626238

image-20221020183711905

重启

1
2
3
sudo -i
/etc/init.d/zabbix-agent restart

image-20221020195205307

聚合图标管理

image-20221020200530263

image-20221020201234099

image-20221020201258296

3` zabbix管理


运维知识集合
http://example.com/2022/10/18/运维知识集合/
作者
MuyanGit
发布于
2022年10月18日
许可协议