\[ -a FILE \] 如果 FILE 存在则为真。
\[ -b FILE \] 如果 FILE 存在且是一个块特殊文件则为真。
\[ -c FILE \] 如果 FILE 存在且是一个字特殊文件则为真。
\[ -d FILE \] 如果 FILE 存在且是一个目录则为真。
\[ -e FILE \] 如果 FILE 存在则为真。
\[ -f FILE \] 如果 FILE 存在且是一个普通文件则为真。
\[ -g FILE \] 如果 FILE 存在且已经设置了SGID则为真。
\[ -h FILE \] 如果 FILE 存在且是一个符号连接则为真。
\[ -k FILE \] 如果 FILE 存在且已经设置了粘制位则为真。
\[ -p FILE \] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
\[ -r FILE \] 如果 FILE 存在且是可读的则为真。
\[ -s FILE \] 如果 FILE 存在且大小不为0则为真。
\[ -t FD \] 如果文件描述符 FD 打开且指向一个终端则为真。
\[ -u FILE \] 如果 FILE 存在且设置了SUID (set user ID)则为真。
\[ -w FILE \] 如果 FILE 如果 FILE 存在且是可写的则为真。
\[ -x FILE \] 如果 FILE 存在且是可执行的则为真。
\[ -O FILE \] 如果 FILE 存在且属有效用户ID则为真。
\[ -G FILE \] 如果 FILE 存在且属有效用户组则为真。
\[ -L FILE \] 如果 FILE 存在且是一个符号连接则为真。
\[ -N FILE \] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
\[ -S FILE \] 如果 FILE 存在且是一个套接字则为真。
\[ FILE1 -nt FILE2 \] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。
\[ FILE1 -ot FILE2 \] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
\[ FILE1 -ef FILE2 \] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
\[ -o OPTIONNAME \] 如果 shell选项 “OPTIONNAME” 开启则为真。
\[ -z STRING \] “STRING” 的长度为零则为真。
\[ -n STRING \] or \[ STRING \] “STRING” 的长度为非零 non-zero则为真。
\[ STRING1 == STRING2 \] 如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。
\[ STRING1 != STRING2 \] 如果字符串不相等则为真。
\[ STRING1 < STRING2 \] 如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。
\[ STRING1 > STRING2 \] 如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。
\[ ARG1 OP ARG2 \] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.
字符串判断
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
\-n str1 当串的长度大于0时为真(串非空)
\-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
数字的判断
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
文件的判断
\-r file 用户可读为真
\-w file 用户可写为真
\-x file 用户可执行为真
\-f file 文件为正规文件为真
\-d file 文件为目录为真
\-c file 文件为字符特殊文件为真
\-b file 文件为块特殊文件为真
\-s file 文件大小非0时为真
\-t file 当文件描述符(默认为1)指定的设备为终端时为真
复杂逻辑判断
\-a 与
\-o 或
! 非
统计一个文件的中所有的error的占比
awk '/error/{err++}END{print err,NR,err/NR\*100"%" }' < xxx.txt 12
关联数组访问问题
a.txt和b.txt两个文件相同的两个字段(id|money),输出a和b文件中相同id并且b文件money值大的一行
cat >>a.txt <<EOF
1|13|35|57|79|9
ROF
cat >>b.txt<<EOF
1|12|23|304|45|56|67|708|89|910|10
EOF
awk -F '|' 'BEGIN{ while(getline < "a.txt") { user\_map\[$1\] = $2; } }{
if ($1 in user\_map) {if (user\_map\[$1\] < $2) print $0; }}' b.txt
注意:如果a.txt不存在,getline会返回-1,导致死循环。我以前曾经碰上过因为这个原因导致程序挂死,所以特别提出来让大家注意
tomcat并发数
netstat -an|grep 10050|awk '{count\[$6\]++} END{for (i in count) print(i,count\[i\])'
sed
sed功能
Sed是Strem Editor(流编辑器)缩写,是操作、过滤和转换文本内容的强大工具。常用功能有增删改查,过滤,取行。
参数
\-n #取消默认输出
\-r #使用扩展正则
\-i #刷到磁盘
\-e #执行多条sed指令
\-f #指令放在文件里
指令
a 追加
i 插入
d 删除
c 替换指定的行
s 替换每一行匹配到的第一个字符
g 替换每一行的全部
p 输出
w 另存文件
e 执行bash命令
q 不继续往下读取
流程
sed 读取文件是逐行读取处理输出
增删改查
增
单行增加
sed '2a 106,dandan,CSO' person.txt
sed '2i 106,dandan,CSO' person.txt
多行增加
sed '2a 106,dandan,CSOn107,bingbing,CCO' person.txt
例子
Port 52113
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
现在想一条命令增加5行文本到第13行前(地址用逗号分隔的,n1,n2可以用数字、正则表达式、或二者的组合表示)
sed -ir '13 i zbcdnPort 52113nPermitRootLogin nonPermitEmptyPasswords nonUseDNS nonGSSAPIAuthentication non#####--end--#######n' /etc/ssh/sshd\_config
其他例
- 10{sed-commands} 对第10行操作
- 10,20{sed-commands} 对10到20行操作,包括第10,20行
- 10,+20{sed-commands} 对10到30(10+20)行操作,包括第10,30行
- 1~2{sed-commands} 对1,3,5,7,……行操作
- 10,
s
e
d
−
c
o
m
m
a
n
d
s
对
10
到最后一行
(
{sed-commands} 对10到最后一行(
sed−commands对10到最后一行(代表最后一行)操作,包括第10行
- /oldboy/{sed-commands} 对匹配oldboy的行操作
- /oldboy/,/Alex/{sed-commands} 对匹配oldboy的行到匹配Alex的行操作
*
- /oldboy/,${sed-commands} 对匹配oldboy的行到最后一行操作
- /oldboy/,10{sed-commands} 对匹配oldboy的行到第10行操作,注意:如果前10行没有匹配到oldboy,sed软件会显示10行以后的匹配oldboy的行,如果有1,/Alex/{sed-commands} 对第1行到匹配Alex的行操作
*
- /oldboy/,+2{sed-commands} 对匹配oldboy的行到其后的2行操作
删除
删除指定的行
- sed ‘d’ person.txt #删除全部
- sed ‘2d’ person.txt #删除第二行
- sed ‘2,5d’ person.txt #删除2到5行
- sed ‘3,$d’ person.txt #删除3到结尾
- sed ‘1~2d’ person.txt #删除1,3,5行
- sed ‘1,+2d’ person.txt #删除1,2,3
- sed ‘/zhangyao/d’ person.txt #删除匹配的zhangyao行
- sed ‘/oldboy/,/Alex/d’ person.txt #删除匹配oldboy到Alex行
- sed ‘/oldboy/,3d’ person.txt #删除从匹配oldboy的3行
打印文件内容但不包含oldboy
sed '/oldboy/d' person.txt #删除包含"oldboy"的行
更改
按行替换c 用新行取代旧行
sed '2c 106,dandan,CSO' person.txt #替换第2行的内容
文本替换s:单独使用,将每一行中第一处匹配的字符串进行替换
- g:每一行进行全部替换
- -i:修改文件内容
sed软件替换模型(方框▇被替换成三角▲)
sed -i 's/▇/▲/g' oldboy.log
sed -i 's#▇#▲#g' oldboy.log
指定行修改配置文件
指定行精确修改配置文件,这样可以防止修改多了地方。
sed '3s#0#9#' person.txt
变量替换
x=a
y=b
echo $x $y
sed s#$x#$y#g test.txt
分组替换( )和1的使用说明
sed软件的( )的功能可以记住正则表达式的一部分,其中,1为第一个记住的模式即第一个小括号中的匹配内容,2第二记住的模式,即第二个小括号中的匹配内容,sed最多可以记住9个。
例:echo I am oldboy teacher.如果想保留这一行的单词oldboy,删除剩下的部分,使用圆括号标记想保留的部分。
echo I am oldboy teacher. |sed 's#^.\*am (\[a-z\].\*) tea.\*$#1#g'
echo I am oldboy teacher. |sed -r 's#^.\*am (\[a-z\].\*) tea.\*$#1#g'
echo I am oldboy teacher. |sed -r 's#I (.\*) (.\*) teacher.#12#g'
命令说明
思路:用oldboy字符替换I am oldboy teacher.
下面解释用□代替空格
^.\*am□ –>这句的意思是以任意字符开头到am□为止,匹配文件中的I am□字符串;
(\[a-z\].\*)□–>这句的外壳就是括号(),里面的\[a-z\]表示匹配26个字母的任何一个,\[a-z\].\*合起来就是匹配任意多个字符,本题来说就是匹配oldboy字符串,由于oldboy字符串是需要保留的,因此用括号括起来匹配,后面通过1来取oldboy字符串。
□tea.\*$–>表示以空格tea起始,任意字符结尾,实际就是匹配oldboy字符串后,紧接着的字符串□teacher.;
后面被替换的内容中的1就是取前面的括号里的内容了,也就是我们要的oldboy字符串。
()是扩展正则表达式的元字符,sed软件默认识别基本正则表达式,想要使用扩展正则需要使用转义,即()。
sed使用-r选项则可以识别扩展正则表达式,此时使用()反而会出错。
#####系统开机启动项优化
chkconfig --list|grep "3:on"|grep -vE "sshd|crond|network|rsyslog|sysstat"|awk '{print $1}'|sed -r 's#^(.\*)#chkconfig 1 off#g'|bash
chkconfig --list|grep "3:on"
特殊符号&代表被替换的内容#→将1到3行的C替换为–C–
sed '1,3s#C#--&--#g' person.txt #→此处&等于C
批量重命名文件
for i in \`seq 5\`;do touch stu\_102999\_${i}\_finished.jpg;done
ls |sed -r 's/(.\*)\_finished(.\*)/mv & 1\_finish2/e'
查
p 输出指定内容,但默认会输出2次匹配的结果,因此使用n取消默认输出
按行查询
sed '2p' person.txt
sed -n '2p' person.txt
sed -n '2,3p' person.txt
sed -n '1~2p' person.txt
sed -n 'p' person.txt
按字符串查询
sed -n '/CTO/p' person.txt
sed -n '/CTO/,/CFO/p' person.txt
混合查询
sed -n '2,/CFO/p' person.txt
sed -n '/feixue/,2p' person.txt
特殊情况,前两行没有匹配到feixue,就向后匹配,如果匹配到feixue就打印此行
其他功能
备份功能
sed -i.bak '$a 1111111111' xxx.txt
备份xxx.txt文件为xxx.txt.bak,修改源文件,最后一行添加111111111
另存功能
sed 's/sb/SB/g w new.txt' xxx.txt
把sb替换成SB的整行输出到new.txt中
大小写转换
L #全部转换成小写
l #单个转换成小写
U #全部转换成大写
u #单个转换成大写
E #需要和U和L一起使用,关闭U和L的功能
sed -r 's/(.\*),(.\*),(.\*)/L3,E1,U2/g' xxx.txt
执行多条sed指令
sed -e '3,$d' -e 's#10#01#g' xxx.txt
sed '3,$d; s#10#01#g' xxx.txt
打印不可见字符l
sed -n 'l' xxx.txt
abc替换ABC(一一对应)
tr 'abc' 'ABC' xxx.txt
sed 'y#abc#ABC#' xxx.txt
可以操作多个文件
sed 'y#abc#ABC#' xxx.txt 222.txt
模拟其他命令
创建svn库的时候自动取消#号和修改路径
如何自学黑客&网络安全
黑客零基础入门学习路线&规划
初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!