zoukankan      html  css  js  c++  java
  • for循环

    命令行里面的for循环

    [root@oldboy opt]# for n in `seq  30`;do date -s "2020-03-$n";touch file$n;done
    `seq 30` 必须是反引号,多条命令用;分割,"2020-03-$n" 不能用单引号强引 ,done结尾
    

    脚本里的for循环

    [root@oldboy ~]# vim /etc/profile.d/mtime.sh  
    #!/bin/bash
    for n in `seq 30`;do
        date -s  "2020-04-$n"            
        touch /opt/$(date +%F)_file.txt  >>/dev/null
    done
    
    #修改系统时间,这样文件的mtime就不一样了,反引号不能使用别的符号代替,写入全局环境变量的脚本,每次开机或者bash都会加载,循环结束,时间修改为 2020-04-30 00:00:00,使用netpdate time1.aliyun.com可以同步阿里云服务器时间
    
    [root@oldboy tmp]# for n1 in `seq 4`;do echo $n1;done  不能用单引号
    1 
    2
    3
    [root@oldboy tmp]# seq 4  
    1
    2
    3
    4
    [root@oldboy tmp]# for n1 in 'seq 4';do echo $n1;done
    cat 1
    [root@oldboy tmp]# for n1 in "seq 4";do echo $n1;done
    cat 1
    

    使用sshpass一次查看多个服务器(10.0.0.5 10.0.0.6)信息(df -h)

    [root@lb01 ~]# vim ssh.sh
    #/bin/bash
    for num in 5 6;do
        echo --------------------10.0.0.$num--------------------
        sshpass -p 1 ssh -o StrictHostKeyChecking=no root@10.0.0.$num df-h
    done
    
    [root@lb01 ~]# sh ssh.sh 
    --------------------10.0.0.5--------------------
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        476M     0  476M   0% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.8M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda3        19G  1.9G   17G  10% /
    /dev/sda1       497M  124M  374M  25% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    --------------------10.0.0.6--------------------
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        476M     0  476M   0% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda3        19G  1.5G   18G   9% /
    /dev/sda1       497M  124M  374M  25% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    

    通过跳板机获取所有机器的load,CPU,Memory等信息(思考:如果服务器数量多,如何并发查看和分发数据)

    [root@web01 ~]# vim df.sh
    #!/bin/bash
    N_ip=172.16.1.
    
    for n in 8 31 41 61;do
            echo --------------172.16.1.${N_ip}${n}磁盘信息--------------
            ssh root@${N_ip}${n} df -h
    
    done
    ~    
    

    脚本1,(跳板机)

    #!/bin/bash
    #jumpserver
    
    lb01=172.16.1.5
    lb02=172.16.1.6
    web01=172.16.1.7
    web02=172.16.1.8
    web03=172.16.1.9
    nfs=172.16.1.31
    backup=172.16.1.41
    db01=172.16.1.51
    db02=172.16.1.52
    db03=172.16.1.53
    db04=172.16.1.54
    m01=172.16.1.61
    zabbix=172.16.1.71
    
    
    cat <<EOF
            +-------------------------+
            |     1)  lb01             |
            |     2)  lb02             |
            |     3)  web01            |
            |     4)  web02            |
            |     5)  web03            |
            |     6)  nfs              |
            |     7)  backup           |
            |     8)  db01             |
            |     9)  db02             |
            |     10) lb03             |
            |     11) db04             |
            |     12) m01              |
            |     13) zabbix           |
            |     h)  help             |
            +-------------------------+
    EOF
    read -p 'Please Input Number: ' num
    
    if [ $num -eq 1 ];then
      ssh root@$lb01
    elif [ $num -eq 2 ];then
      ssh root@$lb02
    elif [ $num -eq 3 ];then
      ssh root@$web01
    elif [ $num -eq 4 ];then
      ssh root@$web02
    elif [ $num -eq 5 ];then
      ssh root@$web03
    elif [ $num -eq 6 ];then
      ssh root@$nfs
    elif [ $num -eq 7 ];then
      ssh root@$backup
    elif [ $num -eq 8 ];then
      ssh root@$db01
    elif [ $num -eq 9 ];then
      ssh root@$db02
    elif [ $num -eq 10 ];then
      ssh root@$db03
    elif [ $num -eq 11 ];then
      ssh root@$db04
    elif [ $num -eq 12 ];then
      ssh root@$m01
    elif [ $num -eq 13 ];then
      ssh root@$zabbix
    else
            echo 别连了,贴纸,输错了
    fi
                                               
    

    脚本2

    #!/bin/bash
    #jumpserver
    lb01=10.0.0.5
    lb02=10.0.0.6
    web01=10.0.0.7
    web02=10.0.0.8
    web03=10.0.0.9
    nfs=10.0.0.31
    backup=10.0.0.41
    db01=10.0.0.51
    m01=10.0.0.61
    zabbix=10.0.0.71
    
    menu(){
            cat <<-EOF
            +-------------------------+
            |     1) lb01             |
            |     2) lb02             |
            |     3) web01            |
            |     4) web02            |
            |     5) web03            |
            |     6) nfs              |
            |     7) backup           |
            |     8) db01             |
            |     9) m01              |
            |     10) zabbix          |
            |     h) help             |
            +-------------------------+
    EOF
    }
    #菜单函数
    menu
    
    #连接函数
    connect(){
      ping -c 1 -w 1 $1 &>/dev/null
      if [ $? -eq 0 ];then
        ssh root@$1
      else
        echo -e "33[5;4;40;31m 别连了,我的哥,$2:$1机器都没开!!!33[0m"
      fi
    }
    
    #控制不让输入ctrl+c,z
    trap "" HUP INT TSTP
    while true
    do
        read -p "请输入要连接的主机编号:" num
        case $num in
                1|lb01)
                  connect $lb01 lb01
                        ;;
                2|lb02)
                  connect $lb02 lb02
                        ;;
                3|web01)
                  connect $web01 web01
                        ;;
                4|web02)
                  connect $web02 web02
                        ;;
                5|web03)
                      connect $web03 web03
                        ;;
                6|nfs)
                  connect $nfs nfs
                        ;;
                7|backup)
                      connect $backup backup
                        ;;
                8|db01)
                       connect $db01 db01
                        ;;
                9|m01)
                        connect $m01 m01
                        ;;
                10|zabbix)
                        connect $zabbix zabbix
                        ;;
                h|help)
                        clear
                        menu
                        ;;
                close)
                        break
                        ;;
        esac
    done
    

    免交互sshpass

    1.安装sshpass
    
    [root@m01 ~]# yum install -y sshpass
    2.使用sshpass命令
    
    [root@m01 ~]# sshpass -p 123456 ssh root@10.0.0.51
    
    [option]
    -p:指定密码
    -f:从文件中取密码
    -e:从环境变量中取密码
    -P:设置密码提示
    
  • 相关阅读:
    express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(二)
    express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(一)
    [转载] 在阿里做了五年技术主管,我有话想说
    阿里云RDS MySql还原到本地Linux/Centos
    如何领域驱动设计?-实践感悟&总结分享
    jira + confluence 安装和破解
    RabbitMQ安装和配置
    [转]技术路线的选择重要但不具有决定性
    .Net core2.0日志组件Log4net、Nlog简单性能测试
    在微服务中使用领域事件
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12813549.html
Copyright © 2011-2022 走看看