mirror of https://github.com/fengyuhetao/shell.git
commit
732733f31f
|
@ -0,0 +1,164 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#mail:xuel@anchnet.com
|
||||||
|
#data:2017/9/7
|
||||||
|
#AutoInstall ELK scripts
|
||||||
|
#Software:elasticsearch-5.4.1/logstash-5.4.1/filebeat-5.4.1/kibana-5.4.1
|
||||||
|
clear
|
||||||
|
echo "##########################################"
|
||||||
|
echo "# Auto Install ELK. ##"
|
||||||
|
echo "# Press Ctrl + C to cancel ##"
|
||||||
|
echo "# Any key to continue ##"
|
||||||
|
echo "##########################################"
|
||||||
|
read -p
|
||||||
|
software_dir="/usr/local/software"
|
||||||
|
elasticsearch_url="https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.1.tar.gz"
|
||||||
|
kibana_url="https://artifacts.elastic.co/downloads/kibana/kibana-5.4.1-linux-x86_64.tar.gz"
|
||||||
|
logstash_url="https://artifacts.elastic.co/downloads/logstash/logstash-5.4.1.tar.gz"
|
||||||
|
filebeat_url="https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.1-linux-x86_64.tar.gz"
|
||||||
|
sys_version=`cat /etc/redhat-release |awk '{print $4}'|cut -d. -f1`
|
||||||
|
IP=`ip addr|grep "inet "|grep -v 127.0.0.1|awk '{print $2}'|cut -d/ -f1`
|
||||||
|
jvm_conf="/usr/local/elasticsearch/config/jvm.options"
|
||||||
|
sys_mem=`free -m|grep Mem:|awk '{print $2}'|awk '{sum+=$1} END {print sum/1024}'|cut -d. -f1`
|
||||||
|
|
||||||
|
#wget software
|
||||||
|
wget_fun() {
|
||||||
|
if [ ! -d ${software_dir} ];then
|
||||||
|
mkdir -p ${software_dir} && cd ${software_dir}
|
||||||
|
else
|
||||||
|
cd ${software_dir}
|
||||||
|
fi
|
||||||
|
for software in $elasticsearch_url $kibana_url $logstash_url $filebeat_url
|
||||||
|
do
|
||||||
|
wget -c $software
|
||||||
|
done
|
||||||
|
clear
|
||||||
|
}
|
||||||
|
#initial system:install java wget;set hostname;disable firewalld
|
||||||
|
init_sys() {
|
||||||
|
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
|
||||||
|
[ "${sys_version}" != "7" ] && echo "Error:This Scripts Support Centos7.xx" && exit 1
|
||||||
|
[ $(id -u) != "0" ] && echo "Error: You must be root to run this script" && exit 1
|
||||||
|
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
|
||||||
|
setenforce 0
|
||||||
|
yum install -y java-1.8.0-openjdk wget net-tools
|
||||||
|
hostnamectl set-hostname elk-server
|
||||||
|
systemctl stop firewalld
|
||||||
|
cat >>/etc/security/limits.conf<<EOF
|
||||||
|
* soft nofile 65536
|
||||||
|
* hard nofile 65536
|
||||||
|
* soft nGproc 65536
|
||||||
|
* hard nproc 65536
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
#install elasticsearch
|
||||||
|
install_elasticsearch() {
|
||||||
|
cd $software_dir
|
||||||
|
tar zxf elasticsearch-5.4.1.tar.gz
|
||||||
|
mv elasticsearch-5.4.1 /usr/local/elasticsearch
|
||||||
|
mkdir -p /usr/local/elasticsearch/data /usr/local/elasticsearch/logs
|
||||||
|
useradd elasticsearch
|
||||||
|
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch
|
||||||
|
echo "vm.max_map_count = 655360" >>/etc/sysctl.conf && sysctl -p
|
||||||
|
if [ ${sys_mem} -eq 0 ];then
|
||||||
|
sed -i "s#`grep "^-Xmx" ${jvm_conf}`#"-Xmx512m"#g" ${jvm_conf}
|
||||||
|
sed -i "s#`grep "^-Xms" ${jvm_conf}`#"-Xms512m"#g" ${jvm_conf}
|
||||||
|
else
|
||||||
|
sed -i "s#`grep "^-Xmx" ${jvm_conf}`#"-Xmx${sys_mem}g"#g" ${jvm_conf}
|
||||||
|
sed -i "s#`grep "^-Xms" ${jvm_conf}`#"-Xms${sys_mem}g"#g" ${jvm_conf}
|
||||||
|
fi
|
||||||
|
cat >>/usr/local/elasticsearch/config/elasticsearch.yml<<EOF
|
||||||
|
cluster.name: my-application
|
||||||
|
node.name: elk-server
|
||||||
|
path.data: /usr/local/elasticsearch/data
|
||||||
|
path.logs: /usr/local/elasticsearch/logs
|
||||||
|
network.host: 127.0.0.1
|
||||||
|
http.port: 9200
|
||||||
|
discovery.zen.ping.unicast.hosts: ["elk-server"]
|
||||||
|
EOF
|
||||||
|
su - elasticsearch -c "nohup /usr/local/elasticsearch/bin/elasticsearch &"
|
||||||
|
}
|
||||||
|
|
||||||
|
#install logstash
|
||||||
|
install_logstash() {
|
||||||
|
cd $software_dir
|
||||||
|
tar -zxf logstash-5.4.1.tar.gz
|
||||||
|
mv logstash-5.4.1 /usr/local/logstash
|
||||||
|
cat>/usr/local/logstash/config/01-syslog.conf<<EOF
|
||||||
|
input {
|
||||||
|
beats {
|
||||||
|
port => "5044"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output {
|
||||||
|
elasticsearch {
|
||||||
|
hosts => "127.0.0.1:9200"
|
||||||
|
}
|
||||||
|
stdout { codec => rubydebug }
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/01-syslog.conf & >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
#install filebeat
|
||||||
|
install_filebeat() {
|
||||||
|
cd $software_dir
|
||||||
|
tar -zxf filebeat-5.4.1-linux-x86_64.tar.gz
|
||||||
|
mv filebeat-5.4.1-linux-x86_64 /usr/local/filebeat
|
||||||
|
cat >/usr/local/filebeat/filebeat.yml<<EOF
|
||||||
|
filebeat.prospectors:
|
||||||
|
- input_type: log
|
||||||
|
paths:
|
||||||
|
- /var/log/*.log
|
||||||
|
output.logstash:
|
||||||
|
hosts: ["127.0.0.1:5044"]
|
||||||
|
EOF
|
||||||
|
cd /usr/local/filebeat/
|
||||||
|
nohup /usr/local/filebeat/filebeat & >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
#install kibana
|
||||||
|
install_kibana() {
|
||||||
|
cd $software_dir
|
||||||
|
tar -zxf kibana-5.4.1-linux-x86_64.tar.gz
|
||||||
|
mv kibana-5.4.1-linux-x86_64 /usr/local/kibana
|
||||||
|
cat >> /usr/local/kibana/config/kibana.yml <<EOF
|
||||||
|
server.port: 5601
|
||||||
|
server.host: "0.0.0.0"
|
||||||
|
elasticsearch.url: "http://127.0.0.1:9200"
|
||||||
|
EOF
|
||||||
|
nohup /usr/local/kibana/bin/kibana & >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
port=$1
|
||||||
|
program=$2
|
||||||
|
check_port=`netstat -lntup|grep ${port}|wc -l`
|
||||||
|
check_program=`ps -ef|grep ${program}|grep -v grep|wc -l`
|
||||||
|
if [ $check_port -gt 0 ] && [ $check_program -gt 0 ];then
|
||||||
|
action "${program} run is ok!" /bin/true
|
||||||
|
else
|
||||||
|
action "${program} run is error!" /bin/false
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
init_sys
|
||||||
|
wget_fun
|
||||||
|
install_elasticsearch
|
||||||
|
install_filebeat
|
||||||
|
install_logstash
|
||||||
|
install_kibana
|
||||||
|
echo -e "\033[32m Checking Elasticsearch...\033[0m"
|
||||||
|
sleep 20
|
||||||
|
check :9200 "elasticsearch"
|
||||||
|
echo -e "\033[32m Checking Logstash...\033[0m"
|
||||||
|
sleep 2
|
||||||
|
check ":9600" "logstash"
|
||||||
|
echo -e "\033[32m Checking Kibana...\033[0m"
|
||||||
|
sleep 2
|
||||||
|
check ":5601" "kibana"
|
||||||
|
action "ELK install is success!" /bin/true
|
||||||
|
echo "url:http://$IP:5601"
|
||||||
|
}
|
||||||
|
main
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# auth:kaliarch
|
||||||
|
# func:sys info check
|
||||||
|
# version:v1.0
|
||||||
|
# sys:centos6.x/7.x
|
||||||
|
|
||||||
|
set -e
|
||||||
|
[ $(id -u) -gt 0 ] && exit 1
|
||||||
|
|
||||||
|
# cpu使用超过百分之多少进行限制
|
||||||
|
PEC_CPU=80
|
||||||
|
|
||||||
|
# 限制进程使用百分之多少,如果程序为多线程,单个cpu限制为85,如果为多核心,就需要按照比例写,例如cpu为2c,像限制多线程占比80%,就写170
|
||||||
|
LIMIT_CPU=85
|
||||||
|
# 日志
|
||||||
|
LOG_DIR=/var/log/cpulimit/
|
||||||
|
|
||||||
|
# 超过阀值进程pid
|
||||||
|
PIDARG=$(ps -aux |awk -v CPU=${PEC_CPU} '{if($3 > CPU) print $2}')
|
||||||
|
CPULIMITCMD=$(which cpulimit)
|
||||||
|
|
||||||
|
install_cpulimit() {
|
||||||
|
[ ! -d /tmp ] && mkdir /tmp || cd /tmp
|
||||||
|
wget -c https://github.com/opsengine/cpulimit/archive/v0.2.tar.gz
|
||||||
|
tar -zxf v0.2.tar.gz
|
||||||
|
cd cpulimit-0.2 && make
|
||||||
|
[ $? -eq 0 ] && cp src/cpulimit /usr/bin/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
do_cpulimit() {
|
||||||
|
[ ! -d ${LOG_DIR} ] && mkdir -p ${LOG_DIR}
|
||||||
|
for i in ${PIDARG};
|
||||||
|
do
|
||||||
|
MSG=$(ps -aux |awk -v pid=$i '{if($2 == pid) print $0}')
|
||||||
|
echo ${MSG}
|
||||||
|
[ ! -d /tmp ] && mkdir /tmp || cd /tmp
|
||||||
|
nohup ${CPULIMITCMD} -p $i -l ${LIMIT_CPU} &
|
||||||
|
echo "$(date) -- ${MSG}" >> ${LOG_DIR}$(date +%F).log
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
|
||||||
|
hash cpulimit
|
||||||
|
if [ $? -eq 0 ];then
|
||||||
|
do_cpulimit
|
||||||
|
else
|
||||||
|
install_cpulimit && do_cpulimit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# function:自定义rm命令,每天晚上定时清理
|
||||||
|
|
||||||
|
CMD_SCRIPTS=$HOME/.rm_scripts.sh
|
||||||
|
TRASH_DIR=$HOME/.TRASH_DIR
|
||||||
|
CRON_FILE=/var/spool/cron/root
|
||||||
|
BASHRC=$HOME/.bashrc
|
||||||
|
|
||||||
|
[ ! -d ${TRASH_DIR} ] && mkdir -p ${TRASH_DIR}
|
||||||
|
cat > $CMD_SCRIPTS <<EOF
|
||||||
|
PARA_CNT=\$#
|
||||||
|
TRASH_DIR=$TRASH_DIR
|
||||||
|
for i in \$*; do
|
||||||
|
DATE=\$(date +%F%T)
|
||||||
|
fileName=\$(basename \$i)
|
||||||
|
mv \$i \$TRASH_DIR/\$fileName.\$DATE
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sed -i "s@$(grep 'alias rm=' $BASHRC)@alias rm='bash ${CMD_SCRIPTS}'@g" $BASHRC
|
||||||
|
source $HOME/.bashrc
|
||||||
|
|
||||||
|
echo "0 0 * * * rm -rf $TRASH_DIR/*" >> $CRON_FILE
|
||||||
|
echo "删除目录:$TRASH_DIR"
|
||||||
|
echo "删除脚本:$CMD_SCRIPTS"
|
||||||
|
echo "请执行:source $BASHRC 来加载文件或退出当前shell重新登录"
|
|
@ -0,0 +1,225 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# auth:kaliarch
|
||||||
|
# func:sys info check
|
||||||
|
# version:v1.0
|
||||||
|
|
||||||
|
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1
|
||||||
|
sysversion=$(rpm -q centos-release|cut -d- -f3)
|
||||||
|
line="-------------------------------------------------"
|
||||||
|
|
||||||
|
|
||||||
|
[ -d logs ] || mkdir logs
|
||||||
|
|
||||||
|
sys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"
|
||||||
|
|
||||||
|
# 获取系统cpu信息
|
||||||
|
function get_cpu_info() {
|
||||||
|
Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
|
||||||
|
Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
|
||||||
|
CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
|
||||||
|
CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
|
||||||
|
CPU_Arch=$(uname -m)
|
||||||
|
cat <<EOF
|
||||||
|
CPU信息:
|
||||||
|
|
||||||
|
物理CPU个数:$Physical_CPUs
|
||||||
|
逻辑CPU个数:$Virt_CPUs
|
||||||
|
每CPU核心数:$CPU_Kernels
|
||||||
|
CPU型号:$CPU_Type
|
||||||
|
CPU架构:$CPU_Arch
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取系统内存信息
|
||||||
|
function get_mem_info() {
|
||||||
|
check_mem=$(free -m)
|
||||||
|
MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB
|
||||||
|
MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB
|
||||||
|
let MemUsed=MemTotal-MemFree
|
||||||
|
MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
|
||||||
|
report_MemTotal="$((MemTotal/1024))""MB" #内存总容量(MB)
|
||||||
|
report_MemFree="$((MemFree/1024))""MB" #内存剩余(MB)
|
||||||
|
report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
内存信息:
|
||||||
|
|
||||||
|
${check_mem}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取系统网络信息
|
||||||
|
function get_net_info() {
|
||||||
|
pri_ipadd=$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')
|
||||||
|
pub_ipadd=$(curl ifconfig.me -s)
|
||||||
|
gateway=$(ip route | grep default | awk '{print $3}')
|
||||||
|
mac_info=$(ip link| egrep -v "lo"|grep link|awk '{print $2}')
|
||||||
|
dns_config=$(egrep -v "^$|^#" /etc/resolv.conf)
|
||||||
|
route_info=$(route -n)
|
||||||
|
cat <<EOF
|
||||||
|
IP信息:
|
||||||
|
|
||||||
|
系统公网地址:${pub_ipadd}
|
||||||
|
系统私网地址:${pri_ipadd}
|
||||||
|
网关地址:${gateway}
|
||||||
|
MAC地址:${mac_info}
|
||||||
|
|
||||||
|
路由信息:
|
||||||
|
${route_info}
|
||||||
|
|
||||||
|
DNS 信息:
|
||||||
|
${dns_config}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取系统磁盘信息
|
||||||
|
function get_disk_info() {
|
||||||
|
disk_info=$(fdisk -l|grep "Disk /dev"|cut -d, -f1)
|
||||||
|
disk_use=$(df -hTP|awk '$2!="tmpfs"{print}')
|
||||||
|
disk_inode=$(df -hiP|awk '$1!="tmpfs"{print}')
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
磁盘信息:
|
||||||
|
|
||||||
|
${disk_info}
|
||||||
|
磁盘使用:
|
||||||
|
|
||||||
|
${disk_use}
|
||||||
|
inode信息:
|
||||||
|
|
||||||
|
${disk_inode}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取系统信息
|
||||||
|
function get_systatus_info() {
|
||||||
|
sys_os=$(uname -o)
|
||||||
|
sys_release=$(cat /etc/redhat-release)
|
||||||
|
sys_kernel=$(uname -r)
|
||||||
|
sys_hostname=$(hostname)
|
||||||
|
sys_selinux=$(getenforce)
|
||||||
|
sys_lang=$(echo $LANG)
|
||||||
|
sys_lastreboot=$(who -b | awk '{print $3,$4}')
|
||||||
|
sys_runtime=$(uptime |awk '{print $3,$4}'|cut -d, -f1)
|
||||||
|
sys_time=$(date)
|
||||||
|
sys_load=$(uptime |cut -d: -f5)
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
系统信息:
|
||||||
|
|
||||||
|
系统: ${sys_os}
|
||||||
|
发行版本: ${sys_release}
|
||||||
|
系统内核: ${sys_kernel}
|
||||||
|
主机名: ${sys_hostname}
|
||||||
|
selinux状态: ${sys_selinux}
|
||||||
|
系统语言: ${sys_lang}
|
||||||
|
系统当前时间: ${sys_time}
|
||||||
|
系统最后重启时间: ${sys_lastreboot}
|
||||||
|
系统运行时间: ${sys_runtime}
|
||||||
|
系统负载: ${sys_load}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# 获取服务信息
|
||||||
|
function get_service_info() {
|
||||||
|
port_listen=$(netstat -lntup|grep -v "Active Internet")
|
||||||
|
kernel_config=$(sysctl -p 2>/dev/null)
|
||||||
|
if [ ${sysversion} -gt 6 ];then
|
||||||
|
service_config=$(systemctl list-unit-files --type=service --state=enabled|grep "enabled")
|
||||||
|
run_service=$(systemctl list-units --type=service --state=running |grep ".service")
|
||||||
|
else
|
||||||
|
service_config=$(/sbin/chkconfig | grep -E ":on|:启用" |column -t)
|
||||||
|
run_service=$(/sbin/service --status-all|grep -E "running")
|
||||||
|
fi
|
||||||
|
cat <<EOF
|
||||||
|
服务启动配置:
|
||||||
|
|
||||||
|
${service_config}
|
||||||
|
${line}
|
||||||
|
运行的服务:
|
||||||
|
|
||||||
|
${run_service}
|
||||||
|
${line}
|
||||||
|
监听端口:
|
||||||
|
|
||||||
|
${port_listen}
|
||||||
|
${line}
|
||||||
|
内核参考配置:
|
||||||
|
|
||||||
|
${kernel_config}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function get_sys_user() {
|
||||||
|
login_user=$(awk -F: '{if ($NF=="/bin/bash") print $0}' /etc/passwd)
|
||||||
|
ssh_config=$(egrep -v "^#|^$" /etc/ssh/sshd_config)
|
||||||
|
sudo_config=$(egrep -v "^#|^$" /etc/sudoers |grep -v "^Defaults")
|
||||||
|
host_config=$(egrep -v "^#|^$" /etc/hosts)
|
||||||
|
crond_config=$(for cronuser in /var/spool/cron/* ;do ls ${cronuser} 2>/dev/null|cut -d/ -f5;egrep -v "^$|^#" ${cronuser} 2>/dev/null;echo "";done)
|
||||||
|
cat <<EOF
|
||||||
|
系统登录用户:
|
||||||
|
|
||||||
|
${login_user}
|
||||||
|
${line}
|
||||||
|
ssh 配置信息:
|
||||||
|
|
||||||
|
${ssh_config}
|
||||||
|
${line}
|
||||||
|
sudo 配置用户:
|
||||||
|
|
||||||
|
${sudo_config}
|
||||||
|
${line}
|
||||||
|
定时任务配置:
|
||||||
|
|
||||||
|
${crond_config}
|
||||||
|
${line}
|
||||||
|
hosts 信息:
|
||||||
|
|
||||||
|
${host_config}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function process_top_info() {
|
||||||
|
|
||||||
|
top_title=$(top -b n1|head -7|tail -1)
|
||||||
|
cpu_top10=$(top b -n1 | head -17 | tail -11)
|
||||||
|
mem_top10=$(top -b n1|head -17|tail -10|sort -k10 -r)
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
CPU占用top10:
|
||||||
|
|
||||||
|
${top_title}
|
||||||
|
${cpu_top10}
|
||||||
|
|
||||||
|
内存占用top10:
|
||||||
|
|
||||||
|
${top_title}
|
||||||
|
${mem_top10}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function sys_check() {
|
||||||
|
get_cpu_info
|
||||||
|
echo ${line}
|
||||||
|
get_mem_info
|
||||||
|
echo ${line}
|
||||||
|
get_net_info
|
||||||
|
echo ${line}
|
||||||
|
get_disk_info
|
||||||
|
echo ${line}
|
||||||
|
get_systatus_info
|
||||||
|
echo ${line}
|
||||||
|
get_service_info
|
||||||
|
echo ${line}
|
||||||
|
get_sys_user
|
||||||
|
echo ${line}
|
||||||
|
process_top_info
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sys_check > ${sys_check_file}
|
Loading…
Reference in New Issue