awk,linux系统启动流程和systemd,加密技术
文本处理之AWKgawk:模式扫描和处理语言,可以实现下面功能
文本处理
输出格式化的文本报表
执行算数运算
执行字符串操作
格式:
awk 'program' var=valuefile…
awk -f programfile var=value file…
说明:
program通常是被放在单引号中,并可以由三种部分组成
BEGIN语句块 :通用语句块之前执行,常用于打印表头
模式匹配的通用语句块:文本处理语句
END语句块 :通用语句块之后执行,常做统计用
常见选项:
-F “分隔符” 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符
-v var=value 变量赋值
Program格式:
pattern{action statements;..}
pattern:决定动作语句何时触发及触发事件,比如:BEGIN,END,正则表达式等
action statements:对数据进行处理,放在{}内指明,常见:print, printf
2 动作 print
print item1, item2, …
说明:
逗号分隔符
输出item可以字符串,也可是数值;当前记录的字段、变量或awk的表达式
如省略item,相当于print $0
固定字符符需要用“ ” 引起来,而变量和数字不需要
3.常见内置变量
FS:输入字段分隔符,默认为空白字符,功能相当于 -F,以变量的方式指定分隔符,可用于后续调用
OFS:输出字段分隔符,默认为空白字符 ,指定输出时的分隔符
NF:字段数量 ,字段一般指用分割符隔断的列数或段数
#引用变量时,变量前不需加$
一般把行成为记录,NR:记录的编号
FNR:各文件分别计数,记录的编号
范例:
1.取出各分区利用率,过滤第一行
# df | awk 'NR>1{print $1,$5}'
devtmpfs 0%
tmpfs 0%
tmpfs 2%
tmpfs 0%
/dev/sda2 2%
/dev/sda3 1%
/dev/sda1 14%
tmpfs 0%
2.取ip地址
# ip addr show eth0 |awk '/inet /{print $2}'
10.0.0.17/24
3.利用变量NR,取特定位
倒数第二段
# awk -F: '{print $(NF-1)}' /etc/passwd
/root
/bin
/sbin
/var/adm
/var/spool/lpd
awk '{ip[$1]++}END{for(i in ip){print i,ip}}' /var/log/httpd/access_log此格式常用于取出日志中每个IP的访问次数启动流程和系统服务
Linux启动流程
centos6启动流程
加电自检-->bootloader-->加载GRUB程序引导内核程序,根据grub.cnf文件将虚拟镜像加载到内存-->根据虚拟镜像加载文件系统-->执行init程序。根据inittab文件确定运行级别,执行rc.d下启动脚本-->执行rc.localcentos7启动流程
加电自检-->bootloader-->加载GRUB2程序引导内核程序,根据grub2.cfg文件将虚拟镜像加载到内存-->根据虚拟镜像加载文件系统-->/usr/lib/systemd/systemd初始化脚本systemd
Systemd:从 CentOS 7 版本之后开始用 systemd 实现init进程,系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
Systemd新特性
系统引导时实现服务并行启动
按需启动守护进程
自动化的服务依赖关系管理
同时采用socket式与D-Bus总线式激活服务
socket与服务程序分离
向后兼容sysv init脚本
使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
systemctl无法与之通信和控制
系统状态快照
systemd 核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息
unit的配置文件
/usr/lib/systemd/system #每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/lib/systemd/system #ubutun的对应目录
/run/systemd/system #系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system #管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行unit的文件格式
service unit file文件通常由三部分组成:
:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
:与特定类型相关的专用选项;此处为Service类型
:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到 的一些选项
Description=The Nginx HTTP Server daemon # 描述信息
After=network.target remote-fs.target nss-lookup.target # 指定启动nginx之前需要其他
的其他服务,如network.target等
# Type为服务类型,仅启动一个主进程的服务为simple,需要启动若干子进程的服务为forking
Type=forking
# 设置执行systemctl start nginx后需要启动的具体命令
ExecStart=/usr/local/nginx/sbin/nginx
# 设置执行systemctl reload nginx后需要执行的具体命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload
# 设置执行systemctl stop nginx后需要执行的具体命令
ExecStop=/bin/kill -s QUIT ${MAINPID}
# 设置在什么模式下被安装,设置开机启动的时候需要
WantedBy=multi-user.target
unit文件创建完成后执行,通知systemd重载此配置文件
#systemctl daemon-reload加密和CA
加密
常见加密算法:对称加密,非对称加密,hash
对称加密算法:加密和解密使用同一个密钥
特性:
加密、解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:
密钥过多
密钥分发
数据来源无法确认
非对称加密算法:密钥是成对出现 ,使用公钥加密,使用与之对应的私钥解密
公钥:public key,公开给所有人,主要给别人加密使用
私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数据加密:适合加密较小数据,比如: 加密对称密钥
hash :也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为digest,即摘要
特性:
任意长度输入,固定长度输出
若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大。
无法从指纹中重新生成数据,即不要逆,具有单向性
功能:
数据完整性
密钥交换:
公钥加密:用目标的公钥加密对称密钥
DH (Deffie-Hellman):生成对称(会话)密钥
DH实现过程:
A: g,p 协商生成公开的整数g, 大素数pB: g,pA:生成隐私数据:a (aip.txtiptables -nL | awk '/REJECT/{print $4}' >iptables.txt#可通过比较两个文件获取未添加规则的ip#grep -vf iptables.txt ip.txt > ip_new.txt#while read line#do# iptables -A INPUT -s ${line} -j REJECT#done < ip_new.txtwhile read linedo grep ${line} iptables.txt >/dev/null && echo "${line} is ok " || iptables -A INPUT -s ${line} -j REJECTdone < ip.txt2、描述密钥交换的过程对称加密:加密方和解密方协商使用同一个密钥进行加密和解密非对称加密:加密方和解密方各自拥有一组公钥和密钥,并将各自密钥发布,加密方使用解密方公钥对数据进行加密发送给解密方,解密方使用自身密钥对加密数据进行解密DH: 1.双方协商出公开的证书g,大素数p 2.双方各自生成隐秘数据a,b(a,b
页:
[1]