• [技术干货] 使用shell脚本编写点名器
    脚本:[root@lzw oldboy]# more classbook.sh #!/bin/bashwhile :  do     line=`cat classbook.txt | wc -l`    num=$[ RANDOM%line+1 ]    sed -n "${num}p" classbook.txt    sleep 2    clear  done[root@lzw oldboy]# more classbook.txt lzw1lzw2lzw3lzw4lzw5lzw6lzw7lzw8lzw9lzw10测试:[root@lzw oldboy]# cat  name.txt | sort -n | uniq -c | sort -nr     66 lzw8     66 lzw1     65 lzw6     65 lzw4     60 lzw3     59 lzw5     59 lzw10注释:本脚本用于上课环境教师点名。脚本主要通过while循环语句对classbook.txt人名统计总行数,并通过RANDOM获取随机数。sed命令打印随机产生的行数并输入对应人名。通过name.txt出现的次数对比每个人名出现概率基本相同。
  • [互动交流] 【MRS】hbase shell 查表数据失败
    【功能模块】MRS Hbase shell 进行count查询时有的表能查询成功,有的查询失败,如图。网络应该不存在问题,Hbase其他命令都可以执行。截图如下:请专家帮看下怎么解决呢?
  • [技术干货] linux shell编写一个简单的菜单
    shell中,使用select语句生成一个简单的菜单选项。[root@k8s-master-c71e shell]# vi sec.sh#!/bin/shPS3="What you like most of the open source system?"select i in CentOS RedHat Ubuntudoecho "Your Select System: "$idone[root@k8s-master-c71e shell]# chomd o+x sec.sh[root@k8s-master-c71e shell]# ./sec.sh1) CentOS2) RedHat3) UbuntuWhat you like most of the open source system?1Your Select System: CentOSWhat you like most of the open source system?2Your Select System: RedHatWhat you like most of the open source system?3Your Select System: UbuntuWhat you like most of the open source system?^C[root@k8s-master-c71e shell]# 
  • [基础组件] 【MRS】【Spark-shell功能】使用spark-shell去读mysql中的数据失败
    【功能模块】MRS 8.0.2混合云版本   Spark 组件  spark-shell功能模块【操作步骤&问题现象】1、进入MRS客户端,source环境变量后完成用户kinit认证2、执行命令启动spark-shell:spark-shell --jars /opt/bdos/bdos-runner-server/lib/mysql-connector-java-8.0.21.jar3、执行命令读取mysql数据:val a = spark.read.format("jdbc").option("url", "jdbc:mysql://172.16.149.167:3306/test").option("query", "select id from test").option("user", "root").option("password", "AHiXitVt6f3gmW3JQII=").option("driver", "com.mysql.jdbc.Driver").load()【截图信息】
  • [基础组件] 运行spark-shell时报错UnresolvedAddressException
    【功能模块】MRS3.0.2 spark-shell【操作步骤&问题现象】1、source bigdata_env     kinit admin2、进到spark下输入bin/spark-shell完整日志内容见附件【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] shell检查硬盘状态
    脚本:[root@lzw oldboy]# more check_fdisk.sh #!/bin/bash#check fdisk#2019-10-23DATE=$( date +%F" "%H:%M)IP=$(ifconfig eth0 | grep "inet" | awk -F[" "]+ '{ print $3 }' )MAIL="xxxxx@qq.com"TOTAL=$(fdisk -l |awk -F '[: ]+' 'BEGIN{OFS="="}/^Disk \/dev/{printf "%s=%sG,",$2,$3 }' )PART_USE=$(df -h | awk 'BEGIN{OFS="="}/^\/dev/{ print $1,int($5),$6}' )for i in $PART_USE;do    PART=$(echo $i |cut -d"=" -f 1 )    USE=$(echo $i |cut -d"=" -f 2 )    MOUNT=$(echo $i |cut -d"=" -f 3)  if [ $USE -gt 20 ]       then         echo "            Date: $DATE            Host: $IP            Total:$TOTAL            Problem: $PART=$USE($MOUNT) " | mail -s "Disk monitor" $MAIL  fidone测试:Message-Id: <20191023073143.36EB56178116@lzw.localdomain>From: root@lzw.localdomain (root)            Date: 2019-10-23 15:31            Host: 192.168.189.144fe80::20c:29ff:fe57:d2fe            Total:/dev/sda=21.5G,/dev/mapper/rhel-root=18.8G,/dev/mapper/rhel-swap=2147G,            Problem: /dev/mapper/rhel-root=28(/) --36EB56178116.1571815906/lzw.localdomain--注释:本脚本用于检测系统磁盘使用的情况。如果超出预定的阈值则通过邮箱发送给指定的用户。脚本和检查cpu、memory方法类似,这里不做多余的阐述。通过fdisk -l查看系统总的磁盘大小。然后使用df -h 查看系统使用情况。通过awk命令过滤出所要的关键信息。设定for循环依次对PART_USE变量获取的信息截取关键参数。if语句,判断USE截取的数字对比 设定的阈值比较大小是否要报警。本例为了实现报警,设置磁盘使用20%,实际业务中可以根据客户需求更改,一般设置80%。
  • [技术干货] shell过滤防火墙日志
    脚本:[root@lzw firewall]# more firewall_SourceIp.sh #/bin/bash#source ip #2019-10-8cd /root/firewallgrep $1 192.168.0.1.log | grep 'Oct  8' >>nat.logmore nat.log | grep 'NAT' | awk -F[" :"]+ '{ print $11 }'>>sourceIP.logmore sourceIP.log | sort | uniq -c | sort -nr >>SourceNum.txt防火墙日志格式:[root@lzw firewall]# more 192.168.0.1.log Oct  8 04:23:26 59.203.40.2 DCFW-1800(root) 44243606 Traffic@SECURITY: SESSION: 59.203.33.34:34842->59.203.11.19:61492(ICMP), interface ethernet0/2, vr trust-vr, policy 1, user -@-, host -, session startOct  8 04:23:26 59.203.40.2 DCFW-1800(root) 4424360a Traffic@SECURITY: SESSION: 59.203.33.34:34842->59.203.11.19:61492(ICMP), application , interface , vr trust-vr, policy 1, user -@-, host -, send packets 2,send bytes 158,receive packets 2,receive bytes 196,start time 2019-10-08 04:23:26,close time 2019-10-08 04:23:26,session end查看源地址信息:[root@lzw firewall]# more SourceNum.txt    1761 10.15.157.122    223 10.23.101.131    118 10.15.105.118    101 10.23.89.125     93 172.29.0.73     87 10.13.42.2     70 10.15.105.76     58 10.12.66.171     57 172.24.64.201     53 172.29.0.31注释:    本脚本用于防火墙日志服务器查询哪些源地址通过具体ip映射出去。脚本先根据映射ip过滤出具体时间的日志,然后根据日志格式,把源地址过滤出来。再次,通过sort和uniq命令对源地址的重复项整理排序。根据结果,可判断出源地址通过输入的映射公网地址次数过多,检查源地址是否攻击存在。
  • [技术干货] shell检查内存
    脚本:[root@lzw oldboy]# more check_memory.sh #!/bin/bash#check memory#2019-10-7DATE=$( date +%F" "%H:%M)IP=$(ifconfig eth0 | grep "inet" | awk -F[" "]+ '{ print $3 }' )MAIL="xxxxxx@qq.com"TOTAL=$(free -m |awk '/Mem/{print $2 }' )USE=$(free -m | awk '/Mem/{ print $3-$6-$7}' )FREE=$(($TOTAL-$USE))if [ $FREE -lt 1600 ]    then       echo "            Date: $DATE            Host: $IP            Problem: Total=$TOTAL,Use=$USE,Free=$FREE " | mail -s "Memory monitor" $MAILfi结果:  Date: 2019-10-07 20:43            Host: 192.168.189.144fe80::20c:29ff:fe57:d2fe            Problem: Total=1826,Use=371,Free=1455 注释:本脚本和检查cpu的案例基本流程顺序相似,定义变量日期、地址、邮箱、总内存、使用内存和剩余内存。考察的是free -m 命令的理解。[root@lzw oldboy]# free -m             total       used       free     shared    buffers     cachedMem:          1826        584       1242          8          1        204-/+ buffers/cache:        379       1447Swap:         2047          0       2047可根据实际情况定义内存的报警阈值,一般定义为总内存的80%左右。超出设定阈值即可发送邮箱。摘录:Linux公社“buffers” 表示块设备(block device)所占用的缓存页,包括:直接读写块设备、以及文件系统元数据(metadata)比如SuperBlock所使用的缓存页;“cached” 表示普通文件数据所占用的缓存页。链接:https://www.linuxidc.com/Linux/2016-01/127869.html
  • [技术干货] shell检查CPU信息
    脚本:[root@lzw ~]# more check_cpu.sh #!/bin/bash#check cpu#2019-9-30DATE=$( date +%F" "%H:%M)IP=$(ifconfig eth0 | grep "inet" | awk -F[" "]+ '{ print $3 }' )MAIL="1157415404@qq.com"if ! which vmstat &>/dev/null    then       echo " vmstat command no found ,please install procps package."    exit 1fi  US=$(vmstat |awk 'NR==3{print $13}')  SY=$(vmstat |awk 'NR==3{print $14}')  IDLE=$(vmstat |awk 'NR==3{print $15}')  WAIT=$(vmstat |awk 'NR==3{print $16}')  USE=$(($US+$SY))if [ $USE -ge 1 ]    then       echo "            Date: $DATE            Host: $IP            Problem: CPU utilization $USE " | mail -s "cpu monitor" $MAILfi 结果:Return-Path: <root@lzw.localdomain>Received: by lzw.localdomain (Postfix, from userid 0)    id 7DFBA6178101; Mon, 30 Sep 2019 17:37:12 +0800 (CST)Date: Mon, 30 Sep 2019 17:37:12 +0800To: xxxxxxx@qq.comSubject: cpu monitorUser-Agent: Heirloom mailx 12.5 7/5/10MIME-Version: 1.0Content-Type: text/plain; charset=us-asciiContent-Transfer-Encoding: 7bitMessage-Id: <20190930093712.7DFBA6178101@lzw.localdomain>From: root@lzw.localdomain (root)            Date: 2019-09-30 17:37            Host: 192.168.189.144fe80::20c:29ff:fe57:d2fe            Problem: CPU utilization 1 --7DFBA6178101.1569836234/lzw.localdomain--注释:本脚本主要用于检测系统CPU使用率,如果超出预定阈值通过设定邮箱告诉管理员。脚本首先定义时间、地址和邮箱。其次,CPU检测使用vmstat命令来查询。通过which命令判断是否安装,如果没有安装提示安装。然后通过vmstat命令与awk命令分别过滤出US、SY、IDLE、WAIT的值。判断USE值是否大于设定阈值,如果大于,则发送对应邮箱。邮箱内容包括发生的时间、主机地址和问题。   本系统是redhat 7,针对大多数业务系统是6版本,变量IP可更换:ifconfig eth1 | awk -F '[ :]+' '/inet addr/{ printf $4 }'。摘录(Linux公社):CPU       These are percentages of total CPU time.       us: Time spent running non-kernel code. (user time, including nice time)   用户时间                 处于用户模式的时间百分比       sy: Time spent running kernel code. (system time)                                           系统时间                 处于内核模式的时间百分比       id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.              CPU空闲时间        空闲时间百分比       wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.            CPU 空闲时间,在此期间系统有未完成的磁盘/NFS I/O 请求       st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.         来自于虚拟机偷取的CPU所占的百分比   (这个不会翻译...)  cpu us: 持续大于50%,服务高峰期可以接受, 如果长期大于50 ,可以考虑优化    cpu sy: 现实内核进程所占的百分比,这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。  cpu wa: 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的, 也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。    cpu id:  CPU 空闲时所占百分比  平常持续小于50,服务高峰期可以接受。
  • [技术干货] shell定时压缩文件
    脚本:[root@newsyslog sbin]# more ftpput #!/bin/sh FILE=natlog.old.$(date -d yesterday +%Y%m%d) cd /var/log/work/10.12.0.100/  mv 10.12.0.100_$(date -d yesterday +%Y-%m-%d).log  $FILE  gzip $FILEfind  /var/log/work/10.12.0.100 -mtime +7  -name "*" -exec rm -f {} \;定时任务:[root@newsyslog 10.12.0.100]# crontab -l0 6 * * * /usr/local/sbin/ftpput > /dev/null 2>&1查看结果:[root@newsyslog sbin]# cd /var/log/work/10.12.0.100/[root@newsyslog 10.12.0.100]# ls10.12.0.100_2019-09-17.log    natlog.old.20190916.gz注释:本脚本主要对业务当中定期压缩日志归档整理。本次案例作为syslog日志服务器,收集10.12.0.100设备的日志并放入/var/log/work/10.12.0.100目录下压缩昨天的日志。脚本先通过定义变量FILE,进入要压缩文件的目录。更改文件的命名格式后,然后,再进行压缩。压缩方法有多种,也可以用tar来执行。随后,设置压缩文件的合理保留时间,超过设置时间定时清理。进而保证服务器的硬盘空间足够使用。日志服务器的收集,往往是以时间戳来命名,在写脚本的时候根据收集日志文件格式来编写以防造成不必要的错误。
  • [技术干货] shell检查443端口
    脚本如下:[root@lzw oldboy]# more check_443.sh #!/bin/bash#check_443_port#2019-8-27PORT=443count=0for i in $(cat ip_list.dat)   do     ((count++))   echo "count=$count"  ( sleep 1;) | telnet $i $PORT >>telnet_result.txt   donecat telnet_result.txt | grep -B 1 \] | grep [0-9] | awk '{print $3}' | cut -d '.' -f 1,2,3,4 >> telnet_alive.txtcat ip_list.dat telnet_alive.txt | sort | uniq -u >>telnet_die.txt检查IP地址列表:[root@lzw oldboy]# more ip_list.dat 220.178.124.93220.178.124.94220.178.124.132220.178.124.133运行脚本:[root@lzw oldboy]# sh check_443.sh count=1Connection closed by foreign host.count=2telnet: connect to address 220.178.124.94: Connection refusedcount=3Connection closed by foreign host.count=4telnet: connect to address 220.178.124.133: Connection refused查看脚本运行结果:[root@lzw oldboy]# more telnet_result.txt Trying 220.178.124.93...Connected to 220.178.124.93.Escape character is '^]'.Trying 220.178.124.94...Trying 220.178.124.132...Connected to 220.178.124.132.Escape character is '^]'.Trying 220.178.124.133...查看开通443端口的地址:[root@lzw oldboy]# more telnet_alive.txt 220.178.124.93220.178.124.132查看未开通443端口的地址:[root@lzw oldboy]# more telnet_die.txt 220.178.124.133220.178.124.94注释:本案例首先要检查是否安装Telnet包,Linux系统默认没有安装。本脚本主要定义本次要探测IP端口,通过for循环依次读取ip_list.dat文件中每行的IP地址,当读取第一行的IP地址220.178.124.93时,Telnet220.178.124.93地址是否开通443端口,检查结果写入telnet_result.txt文件。依次类推,读取完ip_list.dat文件中IP地址跳出循环,生成最终的telnet_result.txt文件。    接下来,只是对telnet_result.txt文本的编辑。可以通过分开执行命令理解脚本的含义:    1)过滤出符号 ] 之前的一行:[root@lzw oldboy]# cat telnet_result.txt | grep -B 1 \]Connected to 220.178.124.93.Escape character is '^]'.--Connected to 220.178.124.132.Escape character is '^]'.2)过滤出包含数字的0-9行:[root@lzw oldboy]# cat telnet_result.txt | grep -B 1 \] | grep [0-9] Connected to 220.178.124.93.Connected to 220.178.124.132.3)输出第三个域的字符串,每个域以空格隔开。[root@lzw oldboy]# cat telnet_result.txt | grep -B 1 \] | grep [0-9] | awk '{print $3}'220.178.124.93.220.178.124.132.4)剪切符号.之前的数字[root@lzw oldboy]# cat telnet_result.txt | grep -B 1 \] | grep [0-9] | awk '{print $3}' | cut -d '.' -f 1,2,3,4 220.178.124.93220.178.124.1325)对比ip_list.dat telnet_alive.txt 文件内容,列出不同的内容放到telnet_die.txt文件。
  • [技术干货] 如何使用shell判断主机存活?
    [root@lzw Desktop]# more ping.sh #!/bin/sh# Ping网段所有IP# 2019/8/14ip="192.168.0."for i in `seq 1 20`do  ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes">>yes.txt|| echo "$ip$i no">>no.txt  #yes正常,no主机不存在或不正常done执行脚本结果:[root@lzw Desktop]# lltotal 12-rw-r--r--. 1 root root 296 Aug 21 22:07 no.txt-rwxr-xr-x. 1 root root 222 Aug 21 22:03 ping.sh-rw-r--r--. 1 root root  16 Aug 21 22:03 yes.txt[root@lzw Desktop]# more no.txt 192.168.0.2 no192.168.0.3 no192.168.0.4 no192.168.0.5 no192.168.0.6 no192.168.0.7 no192.168.0.8 no192.168.0.9 no192.168.0.10 no192.168.0.11 no192.168.0.12 no192.168.0.13 no192.168.0.14 no192.168.0.15 no192.168.0.16 no192.168.0.17 no192.168.0.18 no192.168.0.19 no192.168.0.20 no[root@lzw Desktop]# more yes.txt 192.168.0.1 yes注释:脚本采用ICMP协议的ping命令来检查某一网段的主机ip地址是否存活,主要通过for循环语句依次ping192.168.0.1到192.168.0.20地址,每个地址ping两次。并且通过管道符过滤ttl值判断ip地址是存活。如果ip地址存活,则输出地址到yes.txt文件,否则,IP地址则输入no.,txt文件中。优点:可减少工程师批量检查ip的劳动量缺点:执行脚本主机网络不稳定,丢包严重。      检查主机防火墙禁止ICMP。
  • [技术干货] 如何使用shell判断主机存活?
    [root@lzw Desktop]# more ping.sh #!/bin/sh# Ping网段所有IP# 2019/8/14ip="192.168.0."for i in `seq 1 20`do  ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes">>yes.txt|| echo "$ip$i no">>no.txt  #yes正常,no主机不存在或不正常done执行脚本结果:[root@lzw Desktop]# lltotal 12-rw-r--r--. 1 root root 296 Aug 21 22:07 no.txt-rwxr-xr-x. 1 root root 222 Aug 21 22:03 ping.sh-rw-r--r--. 1 root root  16 Aug 21 22:03 yes.txt[root@lzw Desktop]# more no.txt 192.168.0.2 no192.168.0.3 no192.168.0.4 no192.168.0.5 no192.168.0.6 no192.168.0.7 no192.168.0.8 no192.168.0.9 no192.168.0.10 no192.168.0.11 no192.168.0.12 no192.168.0.13 no192.168.0.14 no192.168.0.15 no192.168.0.16 no192.168.0.17 no192.168.0.18 no192.168.0.19 no192.168.0.20 no[root@lzw Desktop]# more yes.txt 192.168.0.1 yes注释:脚本采用ICMP协议的ping命令来检查某一网段的主机ip地址是否存活,主要通过for循环语句依次ping192.168.0.1到192.168.0.20地址,每个地址ping两次。并且通过管道符过滤ttl值判断ip地址是存活。如果ip地址存活,则输出地址到yes.txt文件,否则,IP地址则输入no.,txt文件中。优点:可减少工程师批量检查ip的劳动量缺点:执行脚本主机网络不稳定,丢包严重。      检查主机防火墙禁止ICMP。
  • [网络安全] 用友NC BeanShell远程代码执行漏洞预警(CNVD-2021-30167)
    一、概要近日,华为云关注到业界有安全研究人员披露用友NC BeanShell远程代码执行漏洞(CNVD-2021-30167),未授权的攻击者利用漏洞可以构造恶意请求,实现在目标系统上执行任意代码,目前漏洞POC已公开,风险较高。用友NC是一个面向集团企业的管理软件,华为云提醒使用用友NC的用户及时安排自检并做好安全加固以降低安全风险。二、威胁级别威胁级别:【严重】(说明:威胁级别共四级:一般、重要、严重、紧急)三、漏洞影响范围影响版本:用友NC 6.5.0.00201601201350四、漏洞处置目前官方已发布补丁修复了该漏洞,请受影响的用户及时下载补丁进行修复漏洞:http://umc.yonyou.com/ump/querypatchdetailed?PK=18981c7af483007db179a236016f594d37c01f22aa5f5d19华为云WAF具备对该漏洞防御能力。华为云WAF用户将“Web基础防护”状态设置为“拦截”模式,具体方法请参见配置Web基础防护规则。注:修复漏洞前请将资料备份,并进行充分测试。 
  • [运维管理] 【GWS】【gsql】可以避免超时5分钟退出到shell吗
    【功能模块】【操作步骤&问题现象】退出到提示符都可以啊,这样可以\c 再连接认证一下为什么要退出gsql,回到shell呢?【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:147 到第
上滑加载中