更新文章

This commit is contained in:
xking 2022-10-26 18:59:55 +08:00
parent 7197c7c844
commit 521b96f319
Signed by: chenkuangwei
GPG Key ID: 931C79A9747F5F82
6 changed files with 566 additions and 0 deletions

15
ldap.md Normal file
View File

@ -0,0 +1,15 @@
# ldap
#### LDAP简称对应
o organization组织-公司)
ou organization unit组织单元-部门)
c - countryName国家
dc - domainComponent域名 -- 类比命名空间
sn suer name真实名称 -- 用户的真是名称
cn - common name常用名称 -- 类比用户的昵称(全名)

View File

@ -0,0 +1,50 @@
```sh
#允许 tcp 2181 端口 被192.168.53.151 地址访问
iptables -A INPUT -p tcp -s 192.168.53.151 --dport 2181 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.53.152 --dport 2181 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.53.153 --dport 2181 -j ACCEPT
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 2181 -j ACCEPT
#禁止 tcp 2181 端口 被所有地址访问
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 2181 -j DROP
#备份 iptables 规则
iptables-save > /etc/sysconfig/iptables
#还原 iptables 规则
iptables-restore < 文件名称
#立即生效 iptables 规则
service iptables save
```
| 参数 | 作用 |
| ------------- | ---------------------------------------------- |
| -P | 设置默认策略:iptables -P INPUT (DROP\|ACCEPT) |
| | FORWARD 转发INPUT 进站OUTPUT 出站 |
| -F | 清空规则链 |
| -L | 查看规则链 |
| -A | 在规则链的末尾加入新规则 |
| -I num | 在规则链的头部加入新规则 |
| -D num | 删除某一条规则 |
| -s | 匹配来源地址IP/MASK加叹号"!"表示除这个IP外。 |
| -R | 替换防火墙规则 |
| -Z | 清空防火墙数据表统计信息 |
| | |
| -d | 匹配目标地址 |
| -i 网卡名称 | 匹配从这块网卡流入的数据 |
| | |
| -o 网卡名称 | 匹配从这块网卡流出的数据 |
| -p | 匹配协议,如tcp,udp,icmp |
| --dport num | 匹配目标端口号 |
| --sport num | 匹配来源端口号 |
| --line-number | 行号 显示 |
![img](http://pic.61dz.com/pic/7775566-fb35d0a138063159.jpg)

301
linux/linux 查看日志.md Normal file
View File

@ -0,0 +1,301 @@
# Linux查看日志
在Linux下用VIM打开大小几个G、甚至几十个G的文件时是非常慢的。
这时,我们可以利用下面的方法分割文件,然后再打开。
## 查看日志文件
**查看文件的前多少行**
```sh
head -10000 /var/lib/mysql/slowquery.log > temp.log
```
上面命令的意思是把slowquery.log文件前10000行的数据写入到temp.log文件中。
**查看文件的后多少行**
```sh
tail -10000 /var/lib/mysql/slowquery.log > temp.log
```
上面命令的意思是把slowquery.log文件后10000行的数据写入到temp.log文件中。
**查看文件的几行到几行**
```sh
sed -n '10,10000p' /var/lib/mysql/slowquery.log > temp.log
```
上面命令的意思是把slowquery.log文件第10到10000行的数据写入到temp.log文件中。
**根据查询条件导出**
```sh
cat catalina.log | grep '2017-09-06 15:15:42' > test.log
```
**根据查询条件导出(上下文)**
显示file文件中匹配keyword字串那行以及上下10行
```sh
cat catalina.log | grep -C 10 keyword
#or
grep -C 10 keyword catalina.out
```
**显示keyword及前10行**
```sh
cat catalina.log | grep -B 10 keyword
#or
grep -B 10 keyword catalina.out
```
**显示keyword及后10行**
```sh
cat catalina.log | grep -A 10 keyword
#or
grep -A 10 keyword catalina.out
```
**实时监控文件输出**
```
tail -f catalina.out
```
## 查看日志文件
查看linux 标准输出
- stdin`0` 输入
- stdout`1` 标准输出
- stderr`2` 错误输出
```sh
ps -aux | grep "service_name"
cd /proc/${pid}/fd/
tail -f 1 #查看标准输出
tail -f 1 #查看错误输出
```
## 查看服务输出
通过**journalctl** 查看 service 服务的日志
**journalctl** 常用参数
```sh
-k 查看内核日志
-b 查看系统本次启动的日志 0本次 -1上次
-u 查看指定服务的日志
-n 指定日志条数
-f 追踪日志
--disk-usage 查看当前日志占用磁盘的空间的总大小
--since
--until
-n 指定行数
```
### 案例:
```sh
#追踪 service_name 日志
journalctl -f -u service_name
#查看service_name 历史日志
journalctl -r -u service_name
```
**.查看内核日志(不显示应用日志)**
```sh
journalctl -k
```
**.查看系统本次启动的日志**
```sh
journalctl -b
journalctl -b -0
```
**.查看上一次启动的日志**
需更改设置,如上次系统崩溃,需要查看日志时,就要看上一次的启动日志。
```sh
journalctl -b -1
```
**.查看指定时间的日志**
```sh
journalctl --since="2012-10-30 18:17:16"
journalctl --since "20 minago"
journalctl --since yesterday
journalctl --since"2015-01-10" --until "2015-01-11 03:00"
journalctl --since 09:00 --until"1 hour ago"
journalctl --since"15:15" --until now
```
**.显示尾部的最新10行日志**
```sh
journalctl -n
```
**.显示尾部指定行数的日志**
```sh
journalctl -n 20
```
**.实时滚动显示最新日志**
```sh
journalctl -f
```
**.查看指定服务的日志**
```sh
journalctl /usr/lib/systemd/systemd
```
**.查看指定进程的日志**
```sh
journalctl _PID=1
```
**.查看某个路径的脚本的日志**
```sh
journalctl /usr/bin/bash
```
**.查看指定用户的日志**
```sh
journalctl _UID=33 --since today
```
**.查看某个Unit的日志**
```sh
journalctl -u nginx.service
journalctl -u nginx.service --since today
```
**.实时滚动显示某个Unit的最新日志**
```sh
journalctl -f -u nginx.service
```
**.合并显示多个Unit的日志**
```sh
journalctl -u nginx.service -u php-fpm.service --since today
```
**查看指定优先级(及其以上级别)的日志**
日志优先级共有8级
```
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
```
```sh
journalctl -p err -b
```
**.不分页标准输出**
日志默认分页输出--no-pager改为正常的标准输出
```sh
journalctl --no-pager
```
**.以JSON格式单行输出**
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgramming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式但是也使用了类似于C语言家族的习惯包括C, C++, C#, Java,JavaScript, Perl, Python等。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构
“名称/值”对的集合A collection ofname/value pairs不同的语言中它被理解为对象object纪录record结构struct字典dictionary哈希表hash table有键列表keyed list或者关联数组associativearray
值的有序列表An ordered list of values在大部分语言中它被理解为数组array
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
例子
以JSON格式单行输出
```sh
journalctl -b -u httpd.service -o json
```
.以JSON格式多行输出可读性更好建议选择多行输出
```sh
journalctl -b -u httpd.service -o json-pretty
```
**.显示日志占据的硬盘空间**
```sh
journalctl --disk-usage
```
**.指定日志文件占据的最大空间**
```sh
journalctl --vacuum-size=1G
```
**.指定日志文件保存多久**
```sh
journalctl --vacuum-time=1years
```

View File

@ -0,0 +1,94 @@
## grep 命令 详解
```
用法grep [OPTION]... PATTERN [FILE]...
在每个 FILE 或标准输入中搜索 PATTERN。
PATTERN 默认是基本正则表达式 (BRE)。
示例grep -i 'hello world' menu.h main.c
正则表达式选择和解释:
-E, --extended-regexp PATTERN 是扩展正则表达式 (ERE)
-F, --fixed-strings PATTERN 是一组换行符分隔的固定字符串
-G, --basic-regexp PATTERN 是基本正则表达式 (BRE)
-P, --perl-regexp PATTERN 是 Perl 正则表达式
-e, --regexp=PATTERN 使用 PATTERN 进行匹配
-f, --file=FILE 从 FILE 中获取 PATTERN
-i, --ignore-case 忽略大小写区别
-w, --word-regexp 强制 PATTERN 只匹配整个单词
-x, --line-regexp 强制 PATTERN 只匹配整行
-z, --null-data 数据行以 0 字节结尾,而不是换行符
各种各样的:
-s, --no-messages 抑制错误消息
-v, --invert-match 选择不匹配的行
-V, --version 显示版本信息并退出
--help 显示此帮助文本并退出
输出控制:
-m, --max-count=NUM 在 NUM 个匹配后停止
-b, --byte-offset 使用输出行打印字节偏移量
-n, --line-number 打印行号和输出行
--line-buffered 每行刷新输出
-H, --with-filename 打印每个匹配的文件名
-h, --no-filename 禁止输出文件名前缀
--label=LABEL 使用 LABEL 作为标准输入文件名前缀
-o, --only-matching 仅显示与 PATTERN 匹配的行的一部分
-q, --quiet, --silent 抑制所有正常输出
--binary-files=TYPE 假设二进制文件是 TYPE
TYPE 是“二进制”、“文本”或“不匹配”
-a, --text 等价于 --binary-files=text
-I 相当于 --binary-files=without-match
-d, --directories=ACTION 如何处理目录;
ACTION 是“读取”、“递归”或“跳过”
-D, --devices=ACTION 如何处理设备、FIFO和套接字
动作是“阅读”或“跳过”
-r, --recursive 像 --directories=recurse
-R, --dereference-recursive
同样,但遵循所有符号链接
--include=FILE_PATTERN
仅搜索与 FILE_PATTERN 匹配的文件
--exclude=FILE_PATTERN
跳过匹配 FILE_PATTERN 的文件和目录
--exclude-from=FILE 跳过与 FILE 中任何文件模式匹配的文件
--exclude-dir=PATTERN 匹配 PATTERN 的目录将被跳过。
-L, --files-without-match 仅打印不包含匹配项的文件名
-l, --files-with-matches 只打印包含匹配项的文件名
-c, --count 仅打印每个文件的匹配行数
-T, --initial-tab 使标签对齐(如果需要)
-Z, --null 在文件名后打印 0 字节
上下文控制:
-B, --before-context=NUM 打印前导上下文的 NUM 行
-A, --after-context=NUM 打印 NUM 行尾随上下文
-C, --context=NUM 打印 NUM 行输出上下文
-NUM 与 --context=NUM 相同
--group-separator=SEP 使用 SEP 作为组分隔符
--no-group-separator 使用空字符串作为组分隔符
--color[=WHEN],
--color[=WHEN] 使用标记突出匹配的字符串;
WHEN 是“总是”、“从不”或“自动”
-U, --binary 在 EOL (MSDOS/Windows) 时不去除 CR 字符
-u, --unix-byte-offsets 报告偏移量,就好像 CR 不存在一样
(MSDOS/Windows)
“egrep”的意思是“grep -E”。 “fgrep”的意思是“grep -F”。
不推荐直接调用“egrep”或“fgrep”。
当 FILE 为 - 时,读取标准输入。没有 FILE阅读 .如果是命令行
-r 给出, - 否则。如果给出的 FILE 少于两个,则假定为 -h。
如果选择了任何一行,则退出状态为 0否则为 1
如果发生任何错误且未给出 -q则退出状态为 2。
将错误报告至bug-grep@gnu.org
GNU Grep 主页:<http://www.gnu.org/software/grep/>
使用 GNU 软件的一般帮助:<http://www.gnu.org/gethelp/>
```
> linux通过grep根据关键字查找日志文件上下文 https://www.cnblogs.com/xuzhujack/p/11116525.html

View File

@ -0,0 +1 @@
# linux使用sed命令

105
linux/linux免密登录.md Normal file
View File

@ -0,0 +1,105 @@
# linux 免密登录
为了保证一台Linux主机的安全每个主机登录的时候都需要账号密码。但是很多时候为了操作方便需要设置集群互信主机之间的SSH免密码登录。
## 一、公钥与私钥
大家可能都知道密钥的概念,在传统的加密算法中,加密和解密使用的是同一个密钥,一旦该密钥泄露,那么加密内容将被破解。通常在现代密码体系中加密和解密是采用不同的密钥,也就是大家经常听说到的**非对称加密**。
**非对称加密算法的公钥私钥的原则:**
1. 一个公钥对应一个私钥,二者是成对出现的。
2. 公钥私钥密钥对需要有一个发布方,发布方自己保存的密钥通常被称为私钥,公开发布给其他方使用的密钥被称为公钥。
3. 公钥加密结果,对应的私钥能解;私钥加密结果,对应的的公钥能解。
## 二、ssh免密登录原理
![img](http://pic.61dz.com/pic/047a86faccdcd3868a806f285067c482)
- 如果host1希望免密登录host2那么密钥对是host1发布的。
- 让host2信任host1的公钥host1即可免密登录host2。所以host1需要将自己的公钥在host2服务器上保存一份复制密钥
## 三、密钥文件
在被SSH登录的主机中都有一个存储来登录的主机的公钥的文件它的名字叫做authorized_keys它的位置就在`/<登录用户根目录>/.ssh`目录中(注:如果这台主机没有被设置任何免秘钥登录,这个文件缺省是不存在的)
![img](http://pic.61dz.com/pic/96e41f3b1263479ec15bf8bb89a21275_1034x256.png)
在authorized_keys文件中存储着能够登录本地主机的其他各个主机的身份信息。如果使用rsa算法生成的密钥文件的存储格式都是以ssh-rsa开头的一组字符串。
## 四、密码生成与密钥分发(免密登录)
### 4.1.环境准备
主机环境
| ip | 主机名称 | 规划用户 |
| :------------ | :------- | :------- |
| 192.168.1.111 | zimug1 | kafka |
| 192.168.1.112 | zimug2 | kafka |
| 192.168.1.113 | zimug3 | kafka |
### 4.2.生成密钥对
因为我们后续为了搭建kafka集群并且使用的kafka用户所以生成密钥对之前用kafka用户登录主机。首先在zimug1主机执行下面的命令。
```
ssh-keygen -t rsa
```
出现提示输入信息,一路回车即可。
![img](http://pic.61dz.com/pic/aa7e8008b5b53458903f79708f9ba4ec_829x466.png)
执行完成之后,我们会在`/home/kafka/.ssh`目录下看到下面的这两个文件。通常认为前者是公钥,后者是私钥。
```
id_rsa.pub
id_rsa
```
### 4.3.密钥处理
- 将公钥保存到authorized_keys文件中
```sh
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
```
- 将公钥分发给zimug2、zimug3主机。按提示输入kafka登陆密码
```sh
ssh-copy-id -i ~/.ssh/id_rsa.pub -p22 kafka@zimug2;
```
需要分开执行,因为需要输入密码。
```sh
ssh-copy-id -i ~/.ssh/id_rsa.pub -p22 kafka@zimug3;
```
这样我们zimug1免密登录zimug2、zimug3的配置工作就完成了。
### 4.4.免密登录测试
在zimug1主机上登录zimug2(或zimug3)主机,输入如下命令,不需要输入密码。你会发现登录主机的切换如下,不需要密码就完成登陆了。
```
[kafka@zimug1 ~]$ ssh kafka@zimug2
Last login: Sat Feb 19 22:07:13 2022 from 192.168.137.10
[kafka@zimug2 ~]$
```
如果想退回到zimug1服务器使用`exit`命令。
如果此时你执行免密登陆测试失败,请执行这三个命令修改主目录及文件权限。如果还不行,重新执行上面的步骤。
```
chmod 755 ~/;
chmod 700 ~/.ssh/;
chmod 600 ~/.ssh/authorized_keys;
```
### 4.5 重复
在zimug2、zimug3服务器上重复以上步骤就可以完全实现三台服务器之间ssh免密登录互通互联。