getshell神器工具怎么用,多线程http并发编写出来的扫描工具!速度快,稳定性高,内存占用小扫到的百分之95都是一手的,可以更好的进行安全检测!更会不定时更新exp漏洞完全打破了目前网上所有的后缀扫描方式。
![](https://img-blog.csdnimg.cn/img_convert/679dd2d51dbdf3477fe0e9c41452f324.png)
tg:xise404演示地址:https://note.youdao.com/s/Xi9S4I16
我的代码要完成的功用是,检查效劳器磁盘数据目录 /database 的挂载状况,假如 /database 目录未独立挂载则输出 error,假如 /database 目录独立挂载,则继续判别能否是 xfs 文件系统格式挂载,不是的话则输出 error,再判别能否适用了 lvm 逻辑卷管理,不是的话则输出 warning,其他状况输出 success。
![](https://img-blog.csdnimg.cn/img_convert/145eab1362c17833b72474d1c965677e.png)
执行脚本结果如下:
[root@192-168-199-132 ~]# sh -x test.sh
test.sh: line 22: syntax error: unexpected end of file
报了个语法错误,但我对这个报错一脸懵逼,第 22 行有语法错误?我的脚本压根没有 22 行好吗?(最后一行是 21 行)
我认真又读了一遍代码,还是没有找到缘由,这时,我疑心是不是由于我脚本是 windows 平台上编写,传上去后有特殊字符招致的?
小技巧: cat -A
留意了,必需 cat -A 才干看得到肉眼看到换行符、制表符,直接 vi 或 vim 是分辨不出来的
Unix 系统的换行符为 \n,而 Windows 的换行符是 \r\n,把 Windows 记事本编辑的文件上传到 Unix 系统后,就有可能有换行符兼容问题,在每行末尾多显现个 "^M"
如图,test.sh 脚本没有 windows 的特殊换行符"^M",由于我当时是用 notepad++ 编写的,选择了 Unix 形式。
作为比照,下面这个是 windows 上用记事本开发的 test2.sh 脚本,带 windows 的特殊换行符"^M"
"^M"也能够了解为 windows 的特殊换行符了,^I 表示 tab 制表符(倒数第二行,蓝色方框,为了演示我这里成心偷偷交换了一处空格为制表符)。
在 shell 中制表符不影响运转,而 ansible playbook 则影响运转。而 "^M"则对 shell 或 ansible playbook 都影响。
所以,带 "^M" 的 test2.sh 脚本运转的报的是另外一种错误。
[root@192-168-199-132 ~]# sh -x test2.sh
test2.sh: line 13: syntax error near unexpected token `else'
'est2.sh: line 13: ` else
我们能够运用 dos2unix 命令很便当的把 windows 换行符转换为 unix 换行符
[root@192-168-199-132 ~]# dos2unix test2.sh dos2unix: converting file test2.sh to Unix format ...
[root@192-168-199-132 ~]# sh -x test2.sh test2.sh: line 22: syntax error: unexpected end of file
如今 test2.sh 执行报错和 test.sh 一样了。
ShellCheck退场
为理解决这个奇异的语法报错问题,我只好下载了知名工具 ShellCheck,我给这个工具的定位是,语法检查 + 代码质量检查工具。