美文网首页
system_info

system_info

作者: NamasAmitabha | 来源:发表于2024-05-05 10:48 被阅读0次
    #!/usr/bin/env bash
    
    
    #指定结果文件
    echo -ne "继续选择 y 放弃选择 n:"
    #read result
    result=`echo $result | tr -d " "`
    
    
    #echo y| 
    
    if [[ $? -ne 0 ]]
    then
        print -u2 "failed."
        exit 1
    fi
    
    echo "#############"
    echo $result
    echo "#############"
    
    
    # send stderr to /dev/null gloabally
    
    exec 2>/tmp/sa.err
    
    # colors
    
    red=$(tput setaf 1)
    
    green=$(tput setaf 2)
    
    yellow=$(tput setaf 3)
    
    reset=$(tput sgr0)
    
    getHardwareData() {
    
      cpuModel=$(awk -F: '/^model name/ {print $2; exit}' /proc/cpuinfo)
    
      cpuCount=$(awk -F: '/^physical id/ { print $2 }' /proc/cpuinfo |sort -u |wc -l)
    
      cpuCoreCount=$(lscpu |grep "^CPU(s):" |xargs |cut -d" " -f2)
    
      cpuCoreList=$(lscpu |grep "^On-line CPU(s) list:" |xargs)
    
      cpuData="$cpuCount x $cpuModel ($cpuCoreList)"
    
    
    
      numaNodes=$(lscpu |grep -w "^NUMA node" |awk '{print $3}')
    
    
    
      memTotal=$(awk '/^MemTotal/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo |xargs echo)
    
      swapTotal=$(awk '/^SwapTotal/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo |xargs echo)
    
      memData="physical memory: $memTotal; swap: $swapTotal"
    
    
    
    
    
    
      for disk in $(grep -Ewo '(s|h|v|xv)d[a-z]|c[0-9]d[0-9]' /proc/partitions |sort -r |xargs echo); do
    
        size=$(echo $(($(cat /sys/dev/block/$(grep -w $disk /proc/partitions |awk '{print $1":"$2}')/size) * 512 / 1024 / 1024 / 1024)))
    
        diskData="$disk size ${size} GiB, $diskData"
    
      done
    
      diskData=$(echo $diskData |sed -e 's/,$//')
    
    
    
    }
    
    getOsData() {
    
      hostname=$(hostname)
    
      full_hostname=$(hostname -f)
    
      arch=$(uname --machine)
    
      os=$(find /etc -maxdepth 1 -name '*release' -type f | xargs cat |grep -E '^(PRETTY_NAME|DISTRIB_DESCRIPTION)'|head -n 1 |cut -d= -f2 |tr -d \")
    
      kernel=$(uname -sr)
    
      ip=$(ip address list |grep -oE "inet [0-9]{1,3}(\.[0-9]{1,3}){3}" |awk '{ print $2 }' |xargs echo)
    
      [[ $(lsblk -n -o type |grep -c lvm) > 0 ]] && isLvmUsed=true || isLvmUsed=false
    
      [[ $(lsblk -n -o type |grep -c raid) > 0 ]] && isMdraidUsed=true || isMdraidUsed=false
    
      sKernSchedMigCost=$(sysctl -n -e kernel.sched_migration_cost_ns kernel.sched_migration_cost) 
    
      sKernSchedAG=$(sysctl -n -e kernel.sched_autogroup_enabled)
    
      sVmDBytes=$(sysctl -n -e vm.dirty_bytes)
    
      sVmDBgBytes=$(sysctl -n -e vm.dirty_background_bytes)
    
      sVmDRatio=$(sysctl -n -e vm.dirty_ratio)
    
      sVmDBgRatio=$(sysctl -n -e vm.dirty_background_ratio)
    
      sVmDExpCSec=$(sysctl -n -e vm.dirty_expire_centisecs)
    
      sVmOverMem=$(sysctl -n -e vm.overcommit_memory)
    
      sVmOverRatio=$(sysctl -n -e vm.overcommit_ratio)
    
      sVmSwap=$(sysctl -n -e vm.swappiness)
    
      sVmMinFreeKb=$(sysctl -n -e vm.min_free_kbytes)
    
      sVmZoneReclaim=$(sysctl -n -e vm.zone_reclaim_mode)
    
      sKernNumaBal=$(sysctl -n -e kernel.numa_balancing)
    
      sVmNrHP=$(sysctl -n -e vm.nr_hugepages)
    
      sVmNrOverHP=$(sysctl -n -e vm.nr_overcommit_hugepages)
    
      hpSizeMbCmd=$(awk '/^Hugepagesize:/ {print $2 / 1024}' /proc/meminfo)
    
      hpSizeMb=${hpSizeMbCmd:-0}
    
      hpTotalAllocCmd=$(awk '/^HugePages_Total:/ {print $2}' /proc/meminfo)
    
      hpTotalAlloc=${hpTotalAllocCmd:-0} 
    
      hpTotalAllocGb=$(( $hpTotalAlloc * $hpSizeMb / 1024))
    
      thpTotalAllocGb=$(awk '/^AnonHugePages:/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo)
    
      thpState=$(cat /sys/kernel/mm/transparent_hugepage/enabled |grep -oE '\[[a-z]+\]' |tr -d \[\])
    
      thpDefrag=$(cat /sys/kernel/mm/transparent_hugepage/defrag |grep -oE '\[[a-z]+\]' |tr -d \[\])
    
      sVmLaptop=$(sysctl -n -e vm.laptop_mode)
    
      blkMqMod=$(find /sys/module -name use_blk_mq |cut -d/ -f4 |xargs echo)
    
      hostList=$(ls -1 /sys/class/scsi_host/ |grep -owE 'host[0-9]+')
    
      useBlkMq=$(cat /sys/class/scsi_host/host*/use_blk_mq |uniq -c)
    
    }
    
    echo -n "${yellow}Do an audit of the particular database? [y/n]: ${reset}"
    
    
    
    
    
    main() {
    
      getHardwareData
    
      getOsData
    
      getPkgInfo
    
      getPostgresCommonData
    
      [[ $pgcheck_success == 0 ]] && echo "WARNING: can't connect to postgres, skip postgres checks."
    
      printSummary
    
      doDbAudit
    
      echo "${green}Finished.${reset}"
    
    }
    
    
    
    #main
    
    check() {
    
      getHardwareData
    
      getOsData
    
      getPkgInfo
    
      getPostgresCommonData
    
      [[ $pgcheck_success == 0 ]] && echo "WARNING: can't connect to postgres, skip postgres checks."
    
      printSummary
    
      doDbAudit
    
      echo "${green}Finished.${reset}"
    
    }
    
    echo -n "${yellow}Do an audit of the particular database? [y/n]: ${reset}"
    
    check
    
    echo "
    
    VERSION=$VERSION
    ${UPDATES}
    
    GetConfig is specifically designed to be non-intrusive.
    It will not impact system performance as even on slow systems it only take between 1 & 10 minutes to run.
    It will only take longer if you have large HSSM, HTnM or HDvM logs.
    
    ##################################################################
    GETCONFIG INSTRUCTIONS
    ##################################################################
    # SILENT (NO OPTION) MODE
    ##################################################################
    
    # ./getcfg <casenumber> -s  <output destination>
    
    *note: 
    <casenumber> is the HDS case number including prefix
    -s is for silent mode 
    <output destination> is optional. If not specified /tmp is used.
    
    In silent Mode, ALL defaults are accepted
    
    ##################################################################
    # SILENT (NO OPTION) VERBOSE MODE
    ##################################################################
    
    # ./getcfg <casenumber> -s -v <output destination>  >/tmp/output.txt 2>&1 &
    
    *note: 
    <casenumber> is the HDS case number including prefix
    -s is for silent mode 
    -v is for verbose mode 
    <output destination>    is the destination directory
    
    
    You may use any combination (-sv) or (-vs) 
    It is strongly advised to add the >/tmp/output.txt 2>&1 & to capture
    the output and run the script in the background when running it with the 
    verbose option.
    
    You may also leave out the mode flags to specify only an output 
    destination
    
    For example:
    
    # ./getcfg <casenumber>  <output destination>  
    
    
    This way you may run
    
    # tail -f /tmp/output.txt 
    
    to view the results real-time while the getconfig completes.
    
    
    ##################################################################
    # DEFAULT OPTION MODE
    # *note: [] means accept the default option. Press <enter> 
    ##################################################################
    /tmp> #./getcfg
    
    ##################################################################
    GSC GetConfig Data Collection Script version 7.15
    ##################################################################
    Display README? [n]:
    Enter your case number including HDS SD or EUC prefix : HDS00003640
    Specify path to save getconfig data [/tmp]:
    Display additional options? [n]:
    ##################################################################
    Gathering standard system files .........
    Gathering process information .....
    Gathering additional system information ......
    Gathering Platform Information and Control Library info ....
    Gathering list of /usr/lib & /usr/local/lib files ...
    Gathering error logs .......
    Gathering dmesg log ...
    ...
    
    ##################################################################
    # ADDITIONAL OPTIONS
    # *note: [] means accept the default option. Press <enter> 
    ##################################################################
    /tmp> #./getcfg
    
    ##################################################################
     GetConfig Data Collection Script version 7.15
    ##################################################################
    Display README? [n]:
    Enter your case number including  HDS SD or EUC prefix : HDS00003640
    Specify path to save getconfig data [/tmp]:
    Display additional options? [n]: y
    >Verbose mode? (*note: output is sent to screen) [n]: y
    >Display Excludes? [n]: y
    >>Exclude hdvm from getconfig? [n]:
    >>Exclude htnm from getconfig? [n]:
    >>Exclude hssm from getconfig? [n]:
    >>Exclude hdlm from getconfig? [n]:
    >>Exclude veritas from getconfig? [n]:
    >>Exclude hitrack from getconfig? [n]:
    >>Exclude horcm from getconfig? [n]:
    >>Exclude rapidx from getconfig? [n]:
    ##################################################################
    Gathering standard system files .........
    Gathering process information .....
    Gathering additional system information ......
    Gathering Platform Information and Control Library info ....
    Gathering list of /usr/lib & /usr/local/lib files ...
    Gathering error logs .......
    Gathering dmesg log ...
    ...
    
    
    ##################################################################
    
    : LEGAL STUFF
    This HDS Data Collection Tool ("GetConfig") is provided AS IS, with no warranty of any kind. Neither Hitachi Data Systems (HD
    S) nor Hitachi, Ltd. warrants or represents the content of this tool. HDS and Hitachi, Ltd. disclaim all express and implied
    warranties , including the implied warranties of merchantability, fitness for a particular purpose and non-infringement. You
    are wholly responsible for your use of this tool and the results of such use. Neither HDS nor Hitachi, Ltd. shall be liable f
    or any damages, direct, indirect, incidental, special, consequential or otherwise for the information, your use of the inform
    ation or the result of such use.
    ##################################################################
    
    "|more;
    
    

    相关文章

      网友评论

          本文标题:system_info

          本文链接:https://www.haomeiwen.com/subject/wbaqxjtx.html