• Linux随记(四)


    一、记录ping不通,与处理方法。

    问题描述:

    对端链路 交换机地址IP:192.168.1.101
    
    笔记本网线直连对端交换机。配置ip192.168.1.102。 此时去Ping 192.168.1.101是通的.
    
    但是新的三层交换机连接对端交换机,vlan90 配置ip 192.168.1.102。access口。掩码30
    此时ping 101不通。怎解?
    
    处理方法,关闭新接入交换机的STP。 此时能ping通。
    
    以后可以让其长ping 一分钟后看效果。
    

    在这里插入图片描述
    在这里插入图片描述

    二、将内容复制到网上fars网站。 (供人查看)

    cat /data/nginx/conf/nginx.conf |curl -F "c=@-" "http://fars.ee/"
    

    在这里插入图片描述

    三、 SNAT 、DNAT图片随记

    #(可回顾朱双印老师的防火墙章节)
    机器通过SNAT 可以访问外面(baidu)。
    通过DNAT,外部可以访问机器里面。
    

    在这里插入图片描述

    四、rsyslog日志集中管理

    #author: 阿劳(Alao)
    # 服务端操作 192.168.8.130
    # 安装软件包
    yum -y install rsyslog
    
    # 备份配置文件
    cp -avi /etc/rsyslog.conf /etc/rsyslog.conf.bak
    
    # 打开4行参数注释
    vim /etc/rsyslog.conf
    
    # Provides UDP syslog reception
    # for parameters see http://www.rsyslog.com/doc/imudp.html
    module(load="imudp") # needs to be done just once
    input(type="imudp" port="514")
    
    # Provides TCP syslog reception
    # for parameters see http://www.rsyslog.com/doc/imtcp.html
    module(load="imtcp") # needs to be done just once
    input(type="imtcp" port="514")
    
    
    # 添加开机启动
    systemctl enable rsyslog.service
    # 启动服务
    systemctl start rsyslog.service
    
    # 查看网络监听端口
    ss -tunlp | grep rsyslog
    
    
    # 防火墙打开514/tcp、514/udp端口
    firewall-cmd --permanent --zone=public --add-port=514/tcp --add-port=514/udp
    firewall-cmd --reload
    firewall-cmd --list-all
    
    #################################################################################
    # 客户端操作 192.168.8.131、192.168.8.132
    # 安装软件包
    yum -y install rsyslog
    
    # 备份配置文件
    cp -avi /etc/rsyslog.conf /etc/rsyslog.conf.bak
    
    # 在文件最后添加两行:
    vim /etc/rsyslog.conf
    # udp
    *.*@192.168.8.130
    # tcp
    *.*@@192.168.8.130
    
    配置2条,正常情况下,日志就会出现两份日志。
    
    # 第一行的声明告诉rsyslog守护进程,将系统上各个设备的各种日志消息路由到远程rsyslog服务器(192.168.8.130)的UDP端口514。
    # 如果出于某种原因,需要更为可靠的协议,如TCP,rsyslog服务器也可以被配置为监听TCP连接,此时须在远程主机的IP地址前添加一个额外的@字符,如第二行。
    
    
    # 添加开机启动
    systemctl enable rsyslog.service
    # 启动服务
    systemctl start rsyslog.service
    
    # 查看与服务端的网络连接
    ss -anp | grep rsyslog
    
    
    #################################################################################
    # 测试
    # 用错误的账号密码ssh登录客户端的服务器
    ssh root@192.168.8.131
    
    # 在服务端用命令监控日志文件变化,可以看到有登录失败的日志信息打印出来
    tail -f /var/log/secure
    
    Oct 17 23:41:21 Alao132 unix_chkpwd[6480]: password check failed for user (root)
    Oct 17 23:41:21 Alao132 sshd[6478]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.8.1  user=root
    Oct 17 23:41:21 Alao132 unix_chkpwd[6480]: password check failed for user (root)
    Oct 17 23:41:21 Alao132 sshd[6478]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.8.1  user=root
    

    五、文档中含有中文格式/windows格式。导致在linux环境执行指令报错 no such file or directory

    #这个通常发生在windows环境复制粘贴指令到linux环境上
    #根据报错信息可分析出。  
    #可用 cat -A ,或vim的 set list 查看隐藏字符。 或者dos2unix处理。
    -bash: ip route add 192.168.12.0/24 via 192.168.100.77 dev ens33 :no such file or directory
    

    在这里插入图片描述

    六、服务器 boot failed:windows boot manager

    在这里插入图片描述

    使用wepe制作PE盘,进PE环境引导修复。 查看是否安装操作系统
    

    七、记一次网络故障。 以及测故障思路。

    #不写在博客
    参考window的word文档 《产业园网络故障(会议室机房机柜跳闸断电)》
    
    

    八、Windows配置双网络环境

    环境:
    windows10笔记本,互联网WiFi、专网网口。
    操作:
    连接互联网WiFi。 网线连接专网网口,配置IP,子网掩码,网关10.xxx.xxx.254,DNS.
    cmd(管理员身份运行),配置路由表

    route add 59.xxx.xxx.1 mask 255.255.255.255 10.xxx.xxx.254 -p
    route add 59.xxx.xxx.4 mask 255.255.255.255 10.xxx.xxx.254 -p
    route add 192.xxx.xxx.x1 mask 255.255.255.255 10.xxx.xxx.254 -p
    route add 192.xxx.xxx.x2 mask 255.255.255.255 10.xxx.xxx.254 -p
    route print
    

    参考:https://www.cnblogs.com/syj-123/p/14206197.html

    九、Windows网络代理与Linux代理 (了解)

    Windows的界面:
    在这里插入图片描述

    https://zhuanlan.zhihu.com/p/46973701 《Linux 让终端走代理的几种方法》
    https://baijiahao.baidu.com/s?id=1733081444327574530&wfr=spider&for=pc 《多种方法设置curl代理服务器》

    十、ping的同时,显示时间(有个延迟显示ping内容现象)

    #!/bin/bash
    while true; 
    do
    	    ping -c 1 www.baidu.com | awk '{print "["strftime("%F %H:%M:%S")"]:"$0}' | grep --color=auto from >> ping.log;
    	    #ping  www.baidu.com | awk '{print "["strftime("%F %H:%M:%S")"]:"$0}' | grep --color=auto from >> ping.log;
    	    sleep 1;
    done &
    
    #made by Mrqiao
    
    这里有个延迟显示ping内容现象。如果没写-c 1 ,tail -f ping.log时,他不会实时显示ping的内容。会延迟30秒左右,才会打印出这段时间ping的内容。
    
    如果在黑窗口外面直接运行 ping  www.baidu.com | awk xxxxx 是没有此延迟现象的
    

    此外yuki工程师给出建议,可能是管道缓冲的原因导致的。
    但脚本运行下行代码,“延迟现象”依旧。 问题仍待探讨

    tdbuf -oL  ping  www.baidu.com | stdbuf -oL  awk '{print "["strftime("%F %H:%M:%S")"]:"$0}' | grep --color=auto from >> ping.log;
    

    参考连接:http://t.zoukankan.com/outsrkem-p-11200697.html 《常用命令–stdbuf》
    在这里插入图片描述

    十一、kubectl exec -it pod-test – /bin/sh 中 – 解释。

    在这里插入图片描述
    在man bash中的解释

    --        A -- signals the end of options and disables further option processing.  Any arguments after the -- are treated as filenames and arguments.  An argument of - is equiv‐alent to --.
    
    #by steven,依文
    选项停止,选项至此截止。    ( --表示后面的内容都是命令。 不带--,后面有空格会被认为是下一个参数  )
    
    --表示选项的结束,其后的任何参数都被视为文件名和参数,可以做一些特殊操作,比如新建名为”-p”的文件夹。
    

    十二、UOS电脑配置双网络环境

    环境:UOS V20系统,PC网线连政务网网口,USB网口连接互联网网口。

    #临时生效
    route add -net 59.xxx.xxx.1 netmask 255.255.255.255 gw 10.xxx.xxx.254
    route add -net 59.xxx.xxx.4 netmask 255.255.255.255 gw 10.xxx.xxx.254
    route add -net 192.xxx.xxx.x1 netmask 255.255.255.255 gw 10.xxx.xxx.254
    route add -net 192.xxx.xxx.x2 netmask 255.255.255.255 gw 10.xxx.xxx.254
    
    #永久生效
    nmcli connection modify "内网" +ipv4.routes "59.xxx.xxx.1/32 10.xxx.xxx.254" 
    nmcli connection modify "内网" +ipv4.routes "59.xxx.xxx.4/32 10.xxx.xxx.254" 
    nmcli connection modify "内网" +ipv4.routes "192.xxx.xxx.x1/32 10.xxx.xxx.254" 
    nmcli connection modify "内网" +ipv4.routes "192.xxx.xxx.x2/32 10.xxx.xxx.254"
    service network-manager restart
    
    #上面modify后面的名称“内网”来源是 ls  /etc/NetworkManager/system-connections
    

    在这里插入图片描述

    参考链接:
    https://blog.csdn.net/zhicai_liu/article/details/110366666 《添加永久路由》
    

    十三、备份docker启动的mysql的库

    bash backupDB.sh

    [root@node-2 shellDir]# cat backupDB.sh
    #!/bin/bash
    echo '##########################################'
    echo '###### The database is automatically backed up at 01:00 am every day ######'
    echo '##########################################'
    # Setting environment variables
    DATE=$(date +%Y_%m_%d_%H_%M_%S)
    # $(date +%Y%m%d)
    # 数据库用户名
    USERNAME=root
    # 密码
    PASSWORD=123456
    # 要备份的数据库
    DB=test
    
    # Docker容器ID
    DOCKERID=3fbd998dcc72
    
    #DB1=xxxx
    # ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。
    # Linux服务器上备份文件目录。
    DIR=/data/mysqlback   
    echo 'Get system date: ' $DATE
    
    if [ ! -d "$DIR" ]; then
    mkdir -p $DIR
    fi
    cd $DIR
    
    echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")
    
    # 最关键的备份语句
    docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD $DB | gzip > /data/mysqlback/test_db_$DATE.sql.gz
    
    #保留最近文件数5,删除其它多余的文件。
    ReservedNum=30
    date=$(date "+%Y%m%d-%H%M%S")
    
    FileNum=$(ls -l $DIR|grep ^- |wc -l)
    
    while(( $FileNum > $ReservedNum))
    do
        OldFile=$(ls -rt $DIR| head -1)
        echo  $date "Delete File:"$OldFile
        rm -rf $DIR/$OldFile
        let "FileNum--"
    done 
    
    echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")
    

    十四、找出当天日期的文件/文件夹,然后scp到目的机器。

    #!/bin/bash
    
    IFS=$'\n'
    
    #看结果数量,不是当日的,他把13日,14日的文件都列出来了。
    #scp -r $( find . -maxdepth 1 -type f -ctime 0 ) root@192.168.x.x:/tmp/testFile
    
    #这样只需要输入一次密码
    scp -r $( find . -maxdepth 1 -type f  -newermt "$(date +%Y-%m-%d) 00:00:00" ! -newermt "$(date +%Y-%m-%d) 23:59:59" ) uos@10.240.x.x:/data
    
    
    #其他写法,但有些缺陷  #如果文件名含有空格,这样会报错。
    scp -r $( ls -l --time-style=long-iso | grep $(date +%Y-%m-%d) | awk '{print $NF}' ) root@192.168.x.x:/tmp
    
    #密码需要输入次数为传输文件数量。也可处理文件名处理含有空格的情况。
    find xx | xargs scp 
    

    十五、tcpdump抓包,抓到30MB后生成一个新文件。删除一天前的pcap文件。

    nohup bash zhuabao.sh &
    版本1

    #!/bin/bash
    
    #oldTime=$(date  +"%Y-%m-%d_%H:%M:%S")
    
    for((;;))
    do
            oldTime=$(date  +"%Y-%m-%d_%H:%M:%S")
            dirName=$(date  +"%Y-%m-%d")
            if [ ! -d $dirName ];then
    		 mkdir -p $dirName
    	    #else
    	    #	 echo -e " file exist "
    	    fi
            
            #tcpdump -i any -s 0 -C 30 -w xxx.pcap udp
            nohup tcpdump -i any -s 0  -w $oldTime.pcap udp &
    
    	sleep 1800
    	#sleep 10
    	newTime=$(date  +"%Y-%m-%d_%H:%M:%S")
    	cp $oldTime.pcap $dirName/$oldTime--$newTime.pcap
    
    	kill $(pgrep tcpdump)
    	rm -f $oldTime.pcap
    	sleep 1
    
    
    	#delete file
    	find /data/trlh/tcpdumpFile/ -mtime +2 -name "*.pcap" -exec rm -f {} \;
    done
    

    版本2

    处理问题:
    1、之前循环中 kill tcpdump进程,使用wireshark打开时会报The capture file appears to have been cut short in the middle of a packet.
    
    2、Windows不支持:符号命名的文件名。 xftp传会帮转换为_号。  sz传报错。
    
    3、timeout的期间如果很短,pcap“不会产生任何数据”。 如 timeout 10 tcpdump xxx , sleep 11 后再重命名。
       但后面发现其实是会产生数据的,比如设置180秒。最好sleep比timeout多一秒,否则他都没结束tcpdump进程,就切割日志了。
    
    参考:
    https://blog.csdn.net/weixin_43869898/article/details/116056580 《记录一次tcpdump截包,wireshark无法正常打开的问题:关于正常退出tcpdump的方式》
    
    https://www.jb51.cc/windows/883516.html 《从服务器上下载文件 提示异常: No permission to write on the specified folder.》
    
    #!/bin/bash
    
    #oldTime=$(date  +"%Y-%m-%d_%H:%M:%S")
    
    for((;;))
    do
            oldTime=$(date  +"%Y-%m-%d_%H-%M-%S")
            dirName=$(date  +"%Y-%m-%d")
            if [ ! -d $dirName ];then
    		 mkdir -p $dirName
    	fi
    
            timeout 180 nohup tcpdump -i any -s 0  -w $oldTime.pcap udp &
        
        #sleep 稳妥起见比timeout的180秒多一秒。 
    	sleep 181
    	newTime=$(date  +"%Y-%m-%d_%H-%M-%S")
    	cp $oldTime.pcap $dirName/$oldTime--$newTime.pcap
    
    	#kill $(pgrep tcpdump)
    	rm -f $oldTime.pcap
    	#sleep 1
    
    
    	#delete file
    	find /app/tcpdumpFile/ -mtime +5 -name "*.pcap" -exec rm -f {} \;
    done
    
    

    参考chatgpt
    在这里插入图片描述

  • 相关阅读:
    【已解决】将一个2708行64列的在GPU上的张量z0矩阵保存下来,格式为csv
    再有人说技术人不懂浪漫,就把这篇文章甩他脸上
    java集成minio文件系统
    78-基于STM32单片机的DDS函数信号波形发生器(实物图+源码+原理图+PCB+论文)全套资料
    替换或重写Tomcat内置的404页面
    Mac SpringBoot项目 Gradle 7.3 转 Maven 手把手教学,包学会~
    React Server Component: 混合式渲染
    javaweb JAVA JSP销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上在线销售
    人脸核身基础版 SDK 接入 > 合作方后台上送身份信息
    网络协议:包丢失&物理层&数据链路层
  • 原文地址:https://blog.csdn.net/Nightwish5/article/details/127069373