文章目录
前言
本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。
一、内容
错误合集,记录用。
二、服务(配置文件)
2.1 DNS服务无效(文件无权限)
[root@localhost named]#host han.han.com
Host wang.han.com not found: 2(SERVFAIL)
#错误内容:配置文件无误,程序启动成功,进行dns解析测试时出现无法解析对应IP
#错误原因:对应数据库配置文件权限不足,han.com.zone权限不够
#解决方案:为数据库配置文件添加对应权限
[root@localhost named]#chmod 640 han.com.zone
[root@localhost named]#chgrp named han.com.zone
[root@localhost named]#ll han.com.zone
-rw-r-----. 1 root named 211 4月 22 13:58 han.com.zone
[root@localhost named]#systemctl restart named
[root@localhost named]#host han.han.com
han.han.com has address 192.168.13.30
#重启服务:修复成功
三、脚本(命令错误)
3.1 多余隐藏字符(Windows写脚本)
[root@localhost shell]#./expect.sh /dev/sdb
-bash: ./expect.sh: /usr/bin/expect^M: 坏的解释器: 没有那个文件或目录
#错误原因:该脚本由Winods记事本编辑,直接导入Linux系统中;由于Windows中换行需要/r/n都有,而Linux中换行只需/n,故出现语法错误
[root@localhost shell]#cat -e expect.sh
#!/usr/bin/expect^M$
set user [lindex $argv 0]^M$
#通过cat命令查看隐藏字符可发现,多出许多^M,这些是Windows中的换行符,Linux系统无法识别该字符进行换行
#解决方法:将所有Windows换行为替换为Linux换行符即可(即删除多余的/r)
[root@localhost shell]#sed -i 's/\r//g' expect.sh
[root@localhost shell]#cat -e expect.sh
#!/usr/bin/expect$
set user [lindex $argv 0]$
#换行符全部替换完毕,问题解决
3.2 过滤指定行(grep+sed)
[root@localhost opt]#cat -n 1.sh
1 a
2 aaa
3 a
4 aa
[root@localhost opt]#cat -n 1.sh |grep a|sed -n "2 p"
2 aaa
#通过grep与sed组合,输出过滤出来内容的指定行内容
3.3 删除变量最后一个字符------${变量%?}
#例句
IP=`ifconfig |grep ens33 -A 1|grep inet|awk '{print $2}'`
#假设此时IP的值为192.168.13.20
echo ${IP$%}
#此时显示的值为192.168.13.2
3.4 搜索本机网关地址及掩码(route)
四、结语
总结:想要学得好,唯有多敲多练,最开始的时候就是抄脚本,后期可根据需求独立盲写脚本。