博文

目前显示的是 七月, 2017的博文

awk和OpenSSL第17天

1:gnu awk 文本处理三工具:grep, sed, awk grep, egrep(也可以使用grep -E,效果同egrep), fgrep:文本过滤工具;pattern sed: 行编辑器,在模式空间和保持空间折腾数据,可以搞出许多花样 awk:报告生成器,格式化文本输出; AWK: Aho, Weinberger, Kernighan --> New AWK, NAWK GNU awk:简称gawk,这是linux上使用的awk gawk - pattern scanning and processing language 模式扫描和处理语言 基本用法:gawk [options] 'BEGIN{action;...} program END{action;...}' FILE ... program的格式是 PATTERN{ACTION STATEMENTS}   多个语句之间用分号分隔,比如print,printf等语句,PATTERN表示模式定界,用来选取某些行 awk的原理:从输入文件中每次读取一行,读取的这一行让-F指定的分隔符切割成多片,每一片由awk内建的变量保存,分别是$1,$2,$3...$n等,而$0则表示这一行 选项 options: -F:指明输入时用到的字段分隔符; -v var=value: 自定义变量 1:print action详解     print item1,item2     注意点:    (1):多个item之间使用逗号分隔开    (2):输出的各item可以是字符串,也可以是数值;当前记录的字段、变量或awk的表达式;    (3): 如省略item,相当于print $0; 例如   tail -3  /etc/fstab | awk '{print "hello",$2,$4}' 2、变量,支持内建变量和自定义变量     2.1 内建变量       FS:input field seperator,默认为空白字符;-v FS=':' ...

函数(函数返回值,函数参数),systemd,bash数组,bash字符串处理 第16天

回顾: sed命令、bash脚本编程 sed命令: sed的格式如下: sed [options] 'SCRIPT' FILE... sed的编辑命令有:d, p, w, r, a, i, c, s, =, sed的高级编辑命令有  n, N, h, H, g, G, p, P, x, D bash脚本编程: while, for, case, until case语句格式如下: case 变量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; ... *) 分支n ;; esac case支持glob风格的通配符: *: 任意长度任意字符; ?: 任意单个字符; []:指定范围内的任意单个字符; a|b: a或b bash中的function:函数 过程式编程:代码重用                     模块化编程                     结构化编程 语法一: function f_name { ...函数体... } 语法二: f_name() { ...函数体... } 函数只有被调用才会执行; 调用:给定函数名,在函数名出现的地方,会被自动替换为函数代码; 函数的生命周期:被调用时创建,返回时终止; return命令返回自定义状态结果,return 0表示成功,return 1-255表示失败 例子:添加用户 #!/bin/bash # function adduser {        if id $username &> /dev/null; then            echo "$username exists."   ...

sed命令,until语句,case语句(第15天)

回顾:selinux, while语句 selinux: 内核,安全加强; 开启selinux可以使用配置文件或者setenforce和getenforce这组命令: selinux的配置文件:/etc/sysconfig/selinux,  /etc/selinux/config # setenforce和getenforce命令用于设置和查看 打标签: chcon [-t TYPE]            -R 布尔型: getsebool [-a] setsebool [-P] sed:编辑器 sed: Stream EDitor, 文本流编辑器,行编辑器,逐行处理; sed工作原理: sed把文件中的地址界定的内容逐行取出放入模式空间中编辑,编辑完成之后,最后将编辑完的结果输出到屏幕中。 用法如下: sed [option]... 'script' inputfile... script:  script表示脚本,由2部分组成,分别是地址定界加编辑命令 例如   sed  [option]...   " 地址定界 编辑命令 ; 地址定界 编辑命令 "  /etc/fstab/ 常用选项: -n:不输出模式中的内容至屏幕; -e: 多点编辑; -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本; -r: 支持使用扩展的正则表达式; -i: 原处编辑; 地址定界: (1) 不给地址:对全文进行处理; (2) 单地址: #: 指定的行;其中 $表示最后一行,类似的$-1就表示倒数第二行 /pattern/:被此处模式所能够匹配到的每一行; (3) 地址范围: #,# #,+# /pat1/,/pat2/ #,/pat1/ (4) ~:步进 1~2 2~2 编辑命令: d: 删除 p: 显示模式空间中的内容    例子   sed -n "/^UUID/p" /etc/fstab a \text:在行后面追加文本;支持使用\n实现多行追加;     例如 ...

安装kali之后,必须做的操作

1:配置kali的软件源 vim  /etc/apt/sources.list  编辑该配置文件加入如下的内容,这里使用中科大的源 deb   http://mirrors.ustc.edu.cn/kali  kali-rolling  main  non-free  contrib deb-src   http://mirrors.ustc.edu.cn/kali  kali-rolling  main  non-free  contrib 2:安装open-vm-tools-desktop 先查看哪些软件包可更新 apt-get update 安装open-vm-tools-desktop软件包 apt-get install open-vm-tools-desktop fuse 追加脚本到指定文件,使之支持共享文件夹 cat <<EOF > /usr/local/sbin/mount-shared-folders #!/bin/bash vmware-hgfsclient | while read folder; do     vmwpath="/mnt/hgfs/\${folder}"     echo "[i] Mounting \${folder}   (\${vmwpath})"     mkdir -p "\${vmwpath}"     umount -f "\${vmwpath}" 2>/dev/null     vmhgfs-fuse -o allow_other -o auto_unmount ".host:/\${folder}" "\${vmwpath}" done sleep 2s EOF chmod +x /usr/local/sbin/mount-shared-folders reboot    重启之后就可以在kali和windows之间共享剪贴...

内核源码编译,CentOS系统安装过程和自动化安装,selinux简介,while语句(第14天)

图片
回顾:内核组成部分、内核编译 内核组成部分如下 : 核心+模块组成内核 核心:/boot/vmlinuz-VERSION-RELEASE 模块:/lib/modules/VERSION-RELEASE/ 模块管理的相关命令: lsmod modinfo modprobe [-r] insmod, rmmod depmod 内核编译时,模块的选择有如下3种选择 [ ]    不选择该模块 [*]    将该模块编译进内核核心文件vmlinuz中 [M]  编译成模块, 大部分模块都可以不编译或者编译进核心里或者编译成模块,少部分模块仅能编译进核心文件里。 -------------------分割线---------------------------------------------------------------- 内核编译详细步骤: 1:到kernel.org下载内核源码包,此处下载4.12的版本号的内核,你可以下载你自己所需的版本 wget -c  https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.tar.xz 2:解压上一步下载的内核源码包到/usr/src目录中 tar -Jxvf linux-4.12.tar.xz -C  /usr/src/ 3:进入/usr/src/目录 cd /usr/src/ 4:创建链接文件linux,链接至目录linux-4.12,用链接文件的方式可以允许/usr/src目录下共存多个内核版本。 ln -sv linux-4.12  linux 5:进入linux目录 cd  linux 6:配置内核选项,就是让你选择开启内核哪些模块和特性,这里的内核特性相当多,如果有不懂的可以google之。这一步做完之后,会生成.config的配置文件,该配置文件里明确哪些模块和特性要进行编译,保存了你的选择。该配置文件里的选项以CONFIG_XXXX_XXXX=y或者CONFIG_XXXX_XXXX=m,分别表示编译进内核和编译成模块。 make menuconfig   开启文...

linux启动流程(启动流程,/sbin/init程序,grub详解,模块相关命令,sysctl和/proc/sys/,内核编译(第13天)

图片
CentOS 5和6的启动流程 Linux组成分为kernel和rootfs(根文件系统)。 kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 glic存放于rootfs中的/lib/,/lib64/中,glibc是其他应用程序的运行环境。 库:函数集合, function, 调用接口       过程调用:procedure       函数调用:function 内核设计流派: 单内核设计:Linux,把所有功能集成于同一个程序;linux对线程支持不好 微内核设计:Windows, Solaris,每种功能使用一个单独子系统实现; Linux内核特点: 支持模块化:每一个.ko文件就是一个内核模块 (kernel object) 支持模块的动态装载和卸载; linux内核的组成部分:核心文件+ramdisk+模块文件 核心文件:/boot/vmlinuz-KERNEL_VERSION-release  其中release表示rpm版本号 ramdisk:   CentOS 5: /boot/initrd-KERNEL_VERSION-release.img   CentOS 6: /boot/initramfs-KERNEL_VERSION-release.img 模块文件:/lib/modules/KERNEL_VERSION-release   存放内核的各个模块文件 为什么要有ramdisk,请参考第8天的博客内容。 内核与ramdisk到底是什么关系?系统在启动的过程中,内核与ramdisk分别扮演什么角色啊? 我对启动的过程一直不明白,懂的朋友帮我讲讲。 谢谢 精彩回答: ramdisk一个作用就是用来解决boot过程中mount根文件系统的“先有鸡还是先有蛋”的问题的。 一般来说,根文件系统在形形色色的存储设备上,不同的设备又要不同的硬件厂商的驱动,比如intel的南桥自然需要intel的ide/sata驱动,VIA的南桥需要VIA的ide/sata驱动,根文件系统也有不同的文件系统的可能,比如ubuntu发行版可能一般用ext3,suse可...