动态 版块 发帖 消息 我的
小绿叶技术博客
小绿叶技术博客
子版块
admin
1619
#!/bin/bashapt install ntfs-3g -y                         # ubuntu/debian 安装 ntfs 分区挂载工具yum install -y ntfs-3g                       # centos 安装 ntfs 工具    mkdir -p /myfolder#  创建挂载目录    mount -t ntfs-3g /dev/sda1 /myfolder# 将 磁盘:/dev/sda1    挂载 到目标据经:/myfolderfor((i=1; i<=6; i++))  do    mkdir -p /myfolder/disk/$i#  创建挂载目录    mount -t ntfs-3g /dev/sda$i /myfolder/disk/$i # 将 磁盘:/dev/sda1    其中$i 是数数,有6分区,顺序挂载 到目标据经:/myfolder/disk/1   done
 7   0  822天前
admin
1422
#!/bin/bash # 小绿叶技术博客扫段攻击拦截系统 #抓包监控tcp攻击ip进行拦截。 zhuabao(){ echo "eisc 安防系统启动扫描,时间 :" `date +%Y-%m-%d-%H:%M:%y` >> /$HOME/eisc-anfang.txt # 将firewalld 防火墙加入开机启动 folder="/datadisk/eisc/anfang/ip" sudo mkdir -p $folder ; sudo chmod 777 -R $folder # 抓包等待30s 杀掉进程,符号 & 并列执行 zdyljs=300 timetcp=10 sudo tcpdump -nn > $folder/ipfwyuan.txt & sleep $timetcp sudo killall -9 tcpdump echo "访问限制tcp连接数;$zdyljs 抓包时长为 $timetcp" sudo rm -rf $folder/ipfw.txt cat $folder/ipfwyuan.txt | grep S | awk -F" " '{print $3}' | awk -F"." '{print $1 "." $2 "." $3 "." $4}' |sort | uniq -c > $folder/ipfw.txt #sed -nr 's/(^|.*[^0-9])(([0-9]+\.){3}[0-9]+).*/\2/p' $folder/ipfwyuan.txt |sort | uniq -c > $folder/ipfw.txt #筛选出日志的ip 记录 #sed -i "s/\[/ /g" $folder/ipfw.txt;sed -i "s/\]/ /g" $folder/ipfw.txt ; sed -i "s/>/ /g" $folder/ipfw.txt ; sed -i '/[a-zA-Z]/d' $folder/ipfw.txt ; #sed -i '/.../d' $folder/ipfw.txt ; sed -i '/:/d' $folder/ipfw.txt ; sed -i "/^$/d" $folder/ipfw.txt # 清除文件特殊字符和空格 sed -i "/^$/d" $folder/ipfw.txt cat $folder/ipfw.txt #-------------------------------- 防火墙 ------------------------------------------# echo "查询数据库白名单:" mysql -h 127.0.0.1 -uenchantment -p000000 -e "use enchantment;select * from setip" mysql -h 127.0.0.1 -uenchantment -p000000 -e "use enchantment;select * from setip" > $folder/bmd-ip.txt echo "" > $folder/bmd-ip.txt ; echo "82.157.148.144" >> $folder/bmd-ip.txt #查询数据库白名单,脚本每次执行查询一次数据库 #---------- 白名单:判断是否拦截 -------# } zhuabao bmd(){ file="$folder/bmd-ip.txt" # 白名单文件 pd=`cat $file | awk -F" " '{print $3}' | grep $ip` # 白名单文件打印第三列为ip地址 # 没有数据库可以删除查询数据库,可以直接写入 if [ ${#pd} -lt 7 ] # ${#} 符号标识字符串长度 then echo "查询匹配 ip: $ip 的长度小于7 没有白名单,将被禁止访问 " else echo "ip: $ip 不小于7查询到数据有白名单,ip 不会被拦截" ip="" fi } #安全防火墙拦截规则执行firewalld firewalldjz(){ sudo iptables -I INPUT -s $ip -j DROP } #------------ ip 白名单:被封禁后解除限制 ------------# bmdIP(){ # 小绿叶结界-解除ip限制,由ip白名单库放行 ip=(`cat $folder/bmd-ip.txt | awk -F" " '{print $3}' `) for((i>0;i<${#ip[*]};i++)) do ip=${ip[$i] } ipd=$(echo $ip | awk -F"." '{print $1 "." $2 "." $3 "." "0/24"}') echo "解除ip:$ip 解除ip网段:$ipd" ID=`iptables -L -n --line-number | grep $ip | awk -F" " '{print $1}'` ; echo "ID : $ID ip: $ip 将被解除限制访问" && sudo iptables -D INPUT $ID ID=`iptables -L -n --line-number | grep $ipd | awk -F" " '{print $1}'` ; echo "ID : $ID ipd: $ipd 将被 解除限制访问" && sudo iptables -D INPUT $ID sudo iptables -I INPUT -s $ip -p TCP --dport 1:65535 -j ACCEPT done } #--------- 安防监控异常 ip ---------# anfangip(){ NR=$(cat $folder/ipfw.txt | wc -l); echo $NR ipfw=(`cat $folder/ipfw.txt | awk -F" " '{print $2}'`) ; echo $ipfw for((i=0;i<$NR;i++)) do ljs=`cat $folder/ipfw.txt | grep ${ipfw[$i]} | awk -F" " '{print $1}'` ; echo "${ipfw[$i]} 连接数为: $ljs" if [ $ljs -gt $zdyljs ] then ip=${ipfw[$i]} bmd firewalldjz echo " `date +%Y-%m-%d-%H:%M:%y` $ip 连接数为: $ljs 超过法制:$zdyljs 连接数 被禁止访问" >> $folder/jinzhiip.txt fi done } #anfangip #--------- 安防日志文件 ---------# filelog(){ echo "安防日志目录: $folder" cat $folder/ipfw.txt >> $folder/rizhi.txt echo `date` >> $folder/rizhi.txt # 实时监控日志ipfw.txt存入长期保存ip地址库 rizhi.txt # cat $folder/rizhi.txt > /$HOME/rizhi.txt } filelog # #--------- 安防监控异常 ip 网段 ---------# anfangipd(){ cat /dev/null > $folder/saoduanrun.txt # 情况实时计算网段库,重新计量记录 cat $folder/ipfwyuan.txt| awk -F" " '{print $3}' | awk -F"." '{print $1 "." $2 "." $3}' |sort | uniq -c > $folder/saoduanrun.txt ; echo "--------- 获得实时日志 saoduanrun.txt 开始判断 -------------- " cat $folder/saoduanrun.txt >> $folder/saoduan.txt ; cat $folder/saoduan.txt > /$HOME/saoduan.txt # 获得网段:实时日志 rizhi.txt 过滤ip段; 存入实时 saoduanrun.txt 扫段日志 ; 扫段日志长期保留ip网段库 saoduan.txt wdk=(`cat $folder/saoduanrun.txt | awk -F" " '{print $2 }'`) # 定义ip段数组:打印第二列为ip NR=${#wdk[*]} # 数组的所有个数为个数 for((i=0;i<$NR;i++)) do wdsa=`cat $folder/saoduanrun.txt | grep ${wdk[$i]} | awk -F" " '{print $1}'` # 查看文本,过滤ip,打印第一列为 并发数量 ip=${wdk[$i]} if [ $wdsa -gt $zdyljs ] then bmd ip=`echo "$ip.0/24"` firewalldjz echo `date +%Y-%m-%d-%H:%M:%y` "$ip 网段连接数为: $wdsl 超过法制:$zdyljs 连接数,被禁止访问 " >> $folder/saoduan.txt else echo "$ip.0/24 没有违反规定并发:$zdyljs ,不进行限制 当前并发: $wdsa " fi done } # anfangipd && bmdIP ; iptables -L -n --line-number | grep DROP # 拦截ip 与 ip 白名单解除限制 # export eisc # 全局变量 eisc # set unset eisc # 取消全局变量 eisc # /etc/profile ~/bashrc 环境变量 #您在 /var/spool/mail/root 中有邮件 function main(){ while : do zhuabao && anfangip && anfangipd && bmdIP && sudo iptables -L -n --line-number | grep DROP sleep 360 done echo `date` "程序已经间隔 360 秒,继续运行" echo `date` "程序已经间隔 360 秒,继续运行" >> /$HOME/eisc-anfang.txt } main
 0   2  1010天前
admin
1130
# 1.安装tomcat   2. java 启动jar 指定端口 # 1.安装tomcat install-tomcat(){     yum -y remove java-1.7.0-openjdk*         yum -y remove tzdata-java.noarch                              # 卸载     yum install -y star     } # 2. java 启动jar 指定端口java -jar xxx.jar --server.port=80
 6   0  1109天前
admin
2431
#--- nginx 反向代理解析 -----#server{listen 80;listen 443;server_name www.kbash.cn;location / {     proxy_pass http://82.157.148.144;     index index.php index.html;  }}#------------------------------##!/bin/bash# 此处是lnmp环境的配置教程,搭建 lnmp 请参考:Linux centos下编译安装Lnmp shell脚本 完整版# nginx服务器部署多个网站,共用一个80端口。#首先备份配置文件:#-------------------------------  备份所有 .pid 的文件为 .pid.backup  --------------------------------#pidback=(`find / -name "*.pid"`)             # 定义一个小括号数组变量pidback  为 反引号里面的命令执行结果for i in ${pidback[*]}                     # for循环变量  i  是 数组变量里所有的元素,[*] 所有, [0] 第一个元素,默认从0 开始do                                      # do 开始执行循环if [ ! -e $i.backup ]                          # 判断参考:Shell if 条件判断文件或目录;字符串长度或为空,逻辑运算then                                    # 判断成立的情况执行echo "备份文件: $i 为: $i.backup"cp $i $i.backupelse                                      # 其他情况执行echo "已经存在备份文件: $i.backup"fi                                     # 结束判断done                                 # 结束循环#------------------------------------  在配置文件里绑定域名和目录 ------------------------------------ #nginxconf="/www/server/nginx/18" # nginx 所在目录www="/www/wwwroot" # web 网站所在路径echo "如果您的nginx 安装目录 不是 /www/server/nginx/18    请修改变量nginxconf 的值如果您的web目录 不是 /www/wwwroot    请修改变量 www 的值"read -p "请输入域名:" addressread -p "请输入网站路径:$www/" catalogueecho $address $www/$cataloguemkdir $nginxconf/vhost                 # 在nginx目录下 创建一个”vhost” 域名解析配置文件目录 touch $nginxconf/vhost/$address.conf   # 创建反向解析配置文件,多个网站需要创建多个配置文件,然后用cat 写入echo  $nginxconf/vhost/$address.conf echo "server{listen 80;  #监听端口设为 80。server_name $address;  #绑定多个域名  空格隔开。index index.php index.htm index.html;  #指定默认文件。root $www/$catalogue;  #指定网站根目录。# location /a  其中 /a 是为了区分名字        location /$catalogue {            root  $www/$catalogue ;            index  index.php index.html index.htm;        }  location ~ .php\$ {                         root           $www/$catalogue;                           fastcgi_pass 127.0.0.1:9000;                         fastcgi_index index.php;                         fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;                         include        fastcgi_params;                 }} " >  $nginxconf/vhost/$address.confmkdir $www/$catalogue                      # 创建站点根目录echo "                                                         # 写入php测试文件aaaaaaaaaaaaaa########  eisc.cn  小绿叶技术博客脚本开发商 【nginx 多网站域名绑定】,测试php功能  ########### BUG 未添加反向解析的域名都默认绑定再第一个web 网站<?phpphpinfo()?>########  eisc.cn  小绿叶技术博客脚本开发商 【nginx 多网站域名绑定】,测试php功能  ########### BUG 未添加反向解析的域名都默认绑定再第一个web 网站" > $www/$catalogue/eisc.cn.phpcurl $address/eisc.cn.php#------------------------------------  nginx 主配置文件  -------------------------------------------------#cat /dev/null > $nginxconf/conf/nginx.conf                                                  # 前面已经备份了配置文件,清空nginx配置文件内容,重新写入echo "worker_processes  1;pid    /usr/bin/nginx.pid;#注意:nginx 的 pid 目录events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;        include $nginxconf/vhost/*.conf;# 注意,inclde 引入 反向解析配置文件路径#此处一般为localhost  不启默认路径网站    server {        listen       80;        server_name  127.0.0.1;        location / {            root  $www;#注意:web网站所在目录            index  index.php index.html index.htm;        }  location ~ .php\$ {                         root           $www;#注意:php解析目录                         fastcgi_pass 127.0.0.1:9000;                         fastcgi_index index.php;                         fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;                         include        fastcgi_params;                 }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }   }" > $nginxconf/conf/nginx.conf nginx -s reloadecho "如果多个解析conf配置文件 绑定同一个网站,会提示 冲突,但是不影响正常使用"# 执行脚本: wget eisc.cn/file/shell/nginx_www.sh ; sh nginx_www.sh
 5   5  1288天前
admin
2708
l #  手动搭建wget www.eisc.cn/file/shell/centos-yum.sh ; sh centos-yum.sh                                                                        # 切换yum 源yum -y install vsftpd                                       # 安装ftp 软件find /etc/vsftpd -name "vsftpd.conf"             # 查找ftp 配置文件 #  自动搭建#!/bin/bashsetenforce 0 # 临时关闭selinuxgetenforce # 查看selinux状态sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config # 永久关闭selinux,重启系统生效repo="centos-yum.sh"if [ ! -e $repo ]; then                 # -e 判断文件存在;参考:Shell if 条件判断文件或目录yum install -y wgetwget www.eisc.cn/file/shell/centos-yum.sh ; sh centos-yum.shelseecho "yum已经切换"fivsftpdinstall(){vsftpdc=(`find /etc/vsftpd -name "vsftpd.conf" | sed "s/ //g"`) # shell 小括号属性是 定义数组变量 lsnginx   它的值是一条命令的执行结 果echo "vsftpd 配置文件总个数为:${#vsftpdc[*]}列出 nginx 配置文件"    ${vsftpdc[*]}         # [*]  星号列出所有元素, 星号改成1 为指定角标1,含义为第二个元素,默认从0开始if [ ${#vsftpdc[*]} -lt 1 ]                     # -lt 小于; $ 为空,! 非运算; $? 判断上一条命令执行状态,0正常;  参考:linux shell $$,$! 等的特殊用法thenecho "配置文件为空,#开始安装vsftpd安装vsftp需要的密码验证模块等环境"#yum -y install pam pam-devel db4 de4-devel db4-tcl vsftpdyum -y install vsftpdmkdir -p /var/ftp/virtual                               # -p 自动创建父目录文件夹: [?v?? t??(?) l] 虚拟useradd vsftpd -M -s /sbin/nologin      # 创建 vsftpd 用户: ,如果此目录不存在,则同时使用-m选项,可以创建主目录。                                                                # -s Shell文件 指定用户的登录Shell。useradd ftpvload -d /var/ftp/ -s /sbin/nologin                                                                #  -d 目录 指定用户主目录sleep 3                                                 # 等待 3 秒chown -R ftpvload.ftpvload /var/ftp/    # -R 目录拥有者ftpvload:ftpvload  其中 . 可以换成 :sleep 5echo "#-------------------------- 开始配置vsftpd --------------------------#"mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back                                                                # mv 重命名# 注意配置文件每行末尾不能有空格或注释echo "pasv_promiscuous=YES#[prəˈmɪskjʊəs] 混杂    ,否则导致被动模式无法ls查看文件anonymous_enable=NO#  [?? n? n? m? s] 匿名:匿名登录local_enable=YES#  [?l?? k(?)l] 本地          [?? ne? b(?)l] 允许write_enable=YES#  [r?? t] 写,权限local_umask=022#umask = 022 时,新建的目录 权限是755,文件的权限是 644#umask = 077 时,新建的目录 权限是700,文件的权限时 600#vsftpd的local_umask和anon_umask借鉴了它anon_upload_enable=NO# anonymous 的简写:匿名,上传文件anon_mkdir_write_enable=NOdirmessage_enable=YES# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。xferlog_enable=YES# 启用记录上传/下载活动日志功能。connect_from_port_20=YES# [k?? n? k t] 连接  启用FTP数据端口的连接请求chown_uploads=NO# 是否具有上传权限.用户由chown_username参数指定。xferlog_file=/var/log/vsftpd.log# 日志目录xferlog_std_format=YES# 使用标准的ftpdxferlog日志格式async_abor_enable=no# 强烈建议不要启用该选项,否则将可能导致出错!ascii_upload_enable=YESascii_download_enable=YES# ascii 编码的上传下载启动ftpd_banner=Welcome to FTP Server# [?ba n?] 标语chroot_local_user=YES# 虚拟列表用户是不受限制目录ls_recurse_enable=NOlisten=YES#  [?l? s(?)n] 听,监听端口hide_ids=YES# [h??d] 隐藏pam_service_name=vsftpd# 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/userlist_enable=YEStcp_wrappers=NO# [?r? p?z] 包装   在VSFTPD中使用TCP_Wrappers远程访问控制机制,强烈建议改为 NO  否则ls 无法guest_enable=YES# [?? s t] 客人guest_username=ftpvloadvirtual_use_local_privs=YESuser_config_dir=/etc/vsftpd/vconf# 用户的配置文件,类似于nginx多网站一样#------- 配置被动模式  ----------pasv_enable=YESpasv_min_port=63000pasv_max_port=65535" > /etc/vsftpd/vsftpd.conf             # 将echo 打印的内容写入配置文件cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup                                                                        # cp 复制,备份文件sed -i s/^/#/g /etc/pam.d/vsftpd                        # 删除开头为 # 符号的行echo "auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusersaccount sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers" >> /etc/pam.d/vsftpdsleep 3echo "#-------------------------- 配置虚拟用户 --------------------------#"touch /var/log/vsftpd.logchown vsftpd.vsftpd /var/log/vsftpd.logmkdir /etc/vsftpd/vconf/ -psleep 3echo -e "test\ntest1234" >> /etc/vsftpd/virtusersdb_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db                                                                        # 生效虚拟用户配置mkdir /var/ftp/virtual/testecho "# 允许可写allow_writeable_chroot=YES#设定支持ASCII模式的上传和下载功能ascii_upload_enable=YESascii_download_enable=YESlocal_root=/var/ftp/virtual/username#指定虚拟用户的具体主路径anonymous_enable=NO#设定不允许匿名用户访问write_enable=YES#设定允许写操作local_umask=022#设定上传文件权限掩码anon_upload_enable=NO#设定不允许匿名用户上传anon_mkdir_write_enable=NO#设定不允许匿名用户建立目录idle_session_timeout=600#设定空闲连接超时时间data_connection_timeout=120#设定单次连续传输最大时间max_clients=10#设定并发客户端访问个数max_per_ip=5#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件#local_max_rate=50000#设定该用户的最大传输速率,单位b/s" >> /etc/vsftpd/vconf/vconf.tmpcp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/testsed -i s/username/test/g /etc/vsftpd/vconf/testecho "完成"elseecho "已经安装vsftpd"fi}vsftpdinstallecho "#----------------  创建虚拟用户 ----------------请输入ftp账户名确认后输入密码 "if read -t 5 -p "Please enter you name: " usernamethen   if [ -f /etc/vsftpd/vconf/$username ]  #判断用户是否存在   then      echo "The $username is exists, please input another name."   else      read -s -p "Please enter your password: " passwd          echo -e "$username\n$passwd" >> /etc/vsftpd/virtusers          db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db      mkdir -p /var/ftp/virtual/$username      chown -R ftpvload.ftpvload /var/ftp      cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/$username      sed -i s/username/$username/g /etc/vsftpd/vconf/$username      echo "The config is over."   fielse   echo -e "\n 您超过5s没有配置信息,系统自动创建默认ftp账户ftp 用户名:eisc   密码:eisc.cn  默认路径:/var/ftp/virtual/eisc"   echo -e "eisc\neisc.cn" >> /etc/vsftpd/virtusers   db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db   mkdir -p /var/ftp/virtual/eisc   chown -R ftpvload.ftpvload /var/ftp   cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/eisc   sed -i s/username/eisc/g /etc/vsftpd/vconf/eisc   # 修改用户家目录fichmod 755 /var/ftp/*systemctl restart firewalldfirewall-cmd --permanent --add-port=21/tcpfirewall-cmd --permanent --add-port=63000-65535/tcp                            # 开放端口范围:3000到4000systemctl restart firewalld vsftpd# 开放防火墙端口和重启vsftpd#----------------  win 文件管理访问ftp出现问题 ----------------#解决办法:设置IE浏览器>>Internet选项>>高级>>将“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”选项去掉>>确定即可#----------------  ftp 下载文件以及常用命令 ----------------先输入ftp 进入ftp 命令行#open                   # 与ftp服务器相连接;#send(put)             # 上传文件#get:                  # 下载文件#mget:                 # 下载多个文件;#cd:                           # 切换目录;# 脚本执行:wget eisc.cn/file/shell/vsftpd.sh ; sh vsftpd.sh# IE  --- inter 选项 ---- 高级 ---- 取消勾选被动模式
 0   5  1316天前
admin
2338
#!/bin/bashrepo="centos-yum.sh"if [ ! -e $repo ]; then                 # -e 判断文件存在;参考:Shell if 条件判断文件或目录yum install -y wgetwget www.eisc.cn/file/shell/centos-yum.sh ; sh centos-yum.shelseecho "yum已经切换"fi################## nginx  ##################aznginx(){lsnginx=(`find / -name "nginx.conf" | sed "s/ //g"`) # shell 小括号属性是 定义数组变量 lsnginx   它的值是一条命令的执行结果echo "nginx 配置文件总个数为:${#lsnginx[*]}列出 nginx 配置文件"    ${lsnginx[*]}         # [*]  星号列出所有元素, 星号改成1 为指定角标1,含义为第二个元素,默认从0开始if [ ${#lsnginx[*]} -lt 1 ]                     # -lt 小于; $ 为空,! 非运算; $? 判断上一条命令执行状态,0正常;  参考:linux shell $$,$! 等的特殊用法thenecho "配置文件为空,正在安装nginx"yum install -y gcc gcc-c++yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-develuseradd -s /bin/false -M nginxmkdir -p /www/server/nginx/download                                     # 下载目录mkdir -p /www/server/nginx/18                                           # 安装目录cd /www/server/nginx/download##wget http://nginx.org/download/nginx-1.18.0.tar.gzwget http://work.eisc.cn/ruanjian/rpm/lnmp/nginx-1.18.0.tar.gztar -zxf nginx-1.18.0.tar.gzcd nginx-1.18.0# 编译 安装目录参数 :--prefix./configure --user=nginx \--group=nginx \--prefix=/www/server/nginx/18 \--with-http_v2_module \--with-http_ssl_module \--with-http_sub_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcremake && make installln -s /www/server/nginx/18/nginx-1.18.0 /www/server/nginx/18/nginx                                                    #给nginx-1.12.0创建软链接去掉末尾的版本号ln -s /www/server/nginx/18/sbin/* /usr/local/sbin/ #创建nginx命令软链接到环境变量############ 添加支持 php############firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --permanent --add-port=9000/tcp # 首先放行防火墙端口firewall-cmd --reload                   # 重启防火墙mkdir -p /www/wwwroot/html              # web路径nginxconf="/www/server/nginx/18/conf/nginx.conf"sed -i "/#/d" $nginxconf ; sed -i "/^$/d" $nginxconf cp $nginxconf $nginxconf.backup                                        # 重点: 修改启动软链,需要写入文件,否则reboot失效无法启动nginxsed -i "1 a\pid    /usr/bin/nginx.pid; " $nginxconf/usr/local/sbin/nginx                   # 启动nginxNR=`cat -n $nginxconf | grep "error_page" | awk -F" " '{print $1}'` ; echo $NRsed -i "$NR i\  location ~ \.php$ { \n                         root           /www/wwwroot;  \n                         fastcgi_pass 127.0.0.1:9000; \n                         fastcgi_index index.php; \n                         fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name; \n                         include        fastcgi_params; \n                 }" $nginxconf                                                                                        # 修改支持php解析目录位置NR=`cat -n $nginxconf | grep "root" | grep "html" | awk -F" " 'NR==1{print $1}' | sed "s/ //g" ` ; echo "查找nginx的web目录行号为:" $NR sed -i "$NR s/root.*/root  \/www\/wwwroot\;/g" $nginxconf                                        # 修改web目录echo "                                                                          # 写入php测试文件<?phpphpinfo()?>" > /www/wwwroot/html/index.php####################################cdnginx -s stop                           # 停止nginxnginx -t                                #已经软连接过了nginxyum install -y net-tools                # 端口工具包netstat -ntlp                           # 查看端口nginx -s reload                         # nginx  重载配置;重启firewall-cmd --permanent --add-port=80/tcp # 防火墙放行80端口systemctl restart firewalld cat /var/log/nginx/error.log           # nginx 日志else                                    # 如果想直接结束:exit 与 fi 配合 echo "nginx.conf存在已经安装nginx"fi}aznginx################## php7.2 ##################azphp(){lsphp=(`find / -name "php.ini" | sed "s/ //g"`) # shell 小括号属性是 定义数组变量 lsnginx   它的值是一条命令的执行结果echo "nginx 配置文件总个数为:${#lsphp[*]}列出 nginx 配置文件"    ${lsphp[*]}     # [*]  星号列出所有元素, 星号改成1 为指定角标1,含义为第二个元素,默认从0开始if [ ${#lsphp[*]} -lt 1 ]               # -lt 小于; $ 为空,! 非运算; $? 判断上一条命令执行状态,0正常;  参考:linux shell $$,$! 等的特殊用法thenecho "配置文件为空,正在安装php"yum install epel-release -y             # 安装扩展包并更新系统内核yum listyum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel                                        # 安装php依赖组件(包含Nginx依赖)downloadPHP="/www/server/php/download"installPHP="/www/server/php/72"mkdir -p $downloadPHPmkdir -p $installPHP                    # 创建下载和安装目录groupadd www                            # 创建一个 www 的组useradd -g www www                      # 创建用户www   归属于 www组yum install -y wget ; yum install -y star                                        # 安装wget 下载工具和star 解压缩工具cd $downloadPHP                         # 进入下载目录后下载文件#wget http://am1.php.net/distributions/php-7.2.1.tar.gzwget http://work.eisc.cn/ruanjian/rpm/lnmp/php-7.2.1.tar.gztar xvf php-7.2.1.tar.gz                # tar -xvf 是解压,-cvf 是创建压缩包cd php-7.2.1# 创建用户和组,并下载php安装包解压cp -frp /usr/lib64/libldap* /usr/lib/  # 复制dap库#### 编译安装 是一条命令的开始./configure --prefix=/www/server/php/72 \--with-config-file-path=/www/server/php/72/etc \--enable-fpm \--with-fpm-user=www \--with-fpm-group=www \--enable-mysqlnd \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--enable-mysqlnd-compression-support \--with-iconv-dir \--with-freetype-dir \--with-jpeg-dir \--with-png-dir \--with-zlib \--with-libxml-dir \--enable-xml \--disable-rpath \--enable-bcmath \--enable-shmop \--enable-sysvsem \--enable-inline-optimization \--with-curl \--enable-mbregex \--enable-mbstring \--enable-intl \--with-mcrypt \--with-libmbfl \--enable-ftp \--with-gd \--enable-gd-jis-conv \--enable-gd-native-ttf \--with-openssl \--with-mhash \--enable-pcntl \--enable-sockets \--with-xmlrpc \--enable-zip \--enable-soap \--with-gettext \--disable-fileinfo \--enable-opcache \--with-pear \--enable-maintainer-zts \--with-ldap=shared \--without-gdbm#### 编译安装 是一条命令结束make -j 4 && make install                           # 让make -j 4 最多同时进行4个编译命令同时进行cp php.ini-development $installPHP/etc/php.inicp $installPHP/etc/php-fpm.conf.default $installPHP/etc/php-fpm.confcp $installPHP/etc/php-fpm.d/www.conf.default $installPHP/etc/php-fpm.d/www.confsetphpini=`find $installPHP -name "php.ini"`    ; echo $setphpini # 定义一个变量名字为:setphpini他的值为一个 find 查找文件 php.ini 命令返回的结果\cp $setphpini $setphpini.backup                    # 备份,反斜杠,不询问sed -i "s/expose_php.*/expose_php\=off/g" $setphpini                                                    # sed -i 修改文件,匹配前一个字符串及其后面所有字符串,修改为后一个; \ 转译特殊字符   $setphpini 是一个文件路径变量sed -i "s/short_open_tag.*/short_open_tag\=ON/g" $setphpinised -i "s/max_execution_time.*/max_execution_time\=1s/g" $setphpini                                                    #execution  [ˌɛksəˈkjuʃ(ə)n] 执行sed -i "s/max_input_time.*/max_input_time\=1s/g" $setphpinised -i "s/memory_limit.*/memory_limit\=128M/g" $setphpini                                                    #  [ˈmeməri ˈlɪmɪt] 内存限制sed -i "s/post_max_size.*/post_max_size\=30M/g" $setphpinised -i "s/date.timezone.*/date.timezone\=Asia\/Shanghai/g" $setphpinised -i "s/memory_limit.*/memory_limit\=128M/g" $setphpinised -i "s/mbstring.func_overload.*/mbstring.func_overload\=2/g" $setphpiniNR=`cat -n $setphpini | grep "mbstring.func_overload" | awk -F" " '{print $1}' | sed "s/ //g"` ; echo $NR                                                    # 定义行号变量 NR  ; grep匹配字符串所在行, 打印第一列,删除空格sed -i "$NR a\extension = /www/server/php/72/lib/php/extensions/no-debug-zts-20170718/ldap.so" $setphpini                                                    # 写入一个字符串, 在行 $NR 的  a\ 下一行写入 、NR=`cat -n $setphpini | grep "\[opcache" | awk -F" " '{print $1}' | sed "s/ //"` ; echo $NRsed -i "$NR a\zend_extension=/www/server/php/72/lib/php/extensions/no-debug-zts-20170718/opcache.so" $setphpini sed -i "s/opcache.max_accelerated_files.*/opcache.max_accelerated_files\=4000/g" $setphpini                                                    # 缓存sed -i "s/opcache.revalidate_freq.*/opcache.revalidate_freq\=60/g" $setphpinised -i "s/opcache.fast_shutdown.*/opcache.fast_shutdown\=1/g" $setphpinised -i "s/opcache.enable_cli.*/opcache.enable_cli\=1/g" $setphpinised -i "s/disable_functions.*/disable_functions\=passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru/g" $setphpini NR=`cat -n $setphpini | grep disable_functions | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\listen = /var/run/www/php-cgi.sock " $setphpini############################wwwconf=`find $installPHP -name "www.conf" ` ; echo "修改配置文件:"$wwwconfcp $wwwconf $wwwconf.backup############################NR=`cat -n $wwwconf | grep "listen \= " | awk -F" " '{print $1}' | sed "s/ //g"`                                                    # cat -n 查看文件显示行号,  awk 字段处理打印第一列为行号sed -i "$NR s/listen.*/listen \= \/var\/run\/www\/php-cgi.sock/g" $wwwconf                                                    # 获取到行号,sed -i 指定行号的内容进行修改NR=`cat -n $wwwconf | grep "listen.owner = www" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\listen.owner = www" $wwwconf                                                    # sed -i 在指定行号$NR的 a\  的下一行插入字符串                                                                                         NR=`cat -n $wwwconf | grep "listen.group = www" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\listen.group = www"  $wwwconfNR=`cat -n $wwwconf | grep "listen.mode =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\listen.mode = 0660" $wwwconf NR=`cat -n $wwwconf | grep "listen.allowed_clients" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\listen.allowed_clients = 127.0.0.1" $wwwconf NR=`cat -n $wwwconf | grep "listen.backlog" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\listen.backlog = -1" $wwwconf NR=`cat -n $wwwconf | grep "pm.max_children =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR s/pm.max_children \=.*/pm.max_children \= 180/g" $wwwconf NR=`cat -n $wwwconf | grep "pm.start_servers =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR s/pm.start_servers \=.*/pm.start_servers \= 50/g" $wwwconf NR=`cat -n $wwwconf | grep "pm.min_spare_servers =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR s/pm.min_spare_servers \=.*/pm.min_spare_servers \= 50/g" $wwwconf NR=`cat -n $wwwconf | grep "pm.max_spare_servers =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR s/pm.max_spare_servers \=.*/pm.max_spare_servers \= 180/g" $wwwconf NR=`cat -n $wwwconf | grep "request_terminate_timeout =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\request_terminate_timeout = 120" $wwwconf                                                                                 # $NR 在制定行,  a 是下一行插入字符串NR=`cat -n $wwwconf | grep "request_slowlog_timeout =" | awk -F" " '{print $1}' | sed "s/ //g"`sed -i "$NR a\request_slowlog_timeout = 50" $wwwconf NR=`cat -n $wwwconf | grep "slowlog =" | awk -F" " '{print $1}' | sed "s/ //g"` ; sed -i "$NR a\slowlog = var/log/slow.log" $wwwconf mkdir /var/run/www/chown -R www:www /var/run/www                   # 创建php-cgi.sock存放目录NR=`cat -n $installPHP/etc/php-fpm.conf | grep "pid =" | awk -F" " '{print $1}' | sed "s/ //g"` ; echo $NRsed -i "$NR a\pid = /www/server/php/72/var/run/php-fpm.pid" /www/server/php/72/etc/php-fpm.confecho -e "[Unit]Description=The PHP FastCGI Process ManagerAfter=syslog.target network.target[Service]Type=simplePIDFile=$installPHP/var/run/php-fpm.pidExecStart=$installPHP/sbin/php-fpm --nodaemonize --fpm-config $installPHP/etc/php-fpm.confExecReload=/bin/kill -USR2 $MAINPID[Install]WantedBy=multi-user.target" > /usr/lib/systemd/system/php-fpm.serviceNR=`cat -n /www/server/php/72/etc/php-fpm.d/www.conf | grep "listen =" | awk -F" " '{print $1}' | sed "s/ //g"` ; echo $NR                                                # grep 匹配字符串所在行,awk -F 指定空格为分隔符,打印第一列sed -i "$NR s/listen =.*/listen = 127.0.0.1:9000/g" $installPHP/etc/php-fpm.d/www.conf                                                # 修改配置文件,监听900端口ln -s /www/server/php/72/bin/php  /usr/bin      # 创建快捷方式,直接使用 php  systemctl start php-fpm  systemctl stop php-fpm  systemctl restart php-fpm  systemctl reload php-fpmelse echo "php.ini 文件存在,已经安装php"fi}azphpazmariadb(){lsphp=(`find / -name "mysql.server" | sed "s/ //g"`) # shell 小括号属性是 定义数组变量 lsnginx   它的值是一条命令的执行结果echo "nginx 配置文件总个数为:${#lsphp[*]}列出 nginx 配置文件"    ${lsphp[*]}             # [*]  星号列出所有元素, 星号改成1 为指定角标1,含义为第二个元素,默认从0开始if [ ${#lsphp[*]} -lt 1 ]                       # -lt 小于; $ 为空,! 非运算; $? 判断上一条命令执行状态,0正常;  参考:linux shell $$,$! 等的特殊用法thenecho "配置文件为空,正在安装mariadb"yum install -y openssl openssl-devel ncurses ncurses-devel bison bison-devel jemalloc jemalloc-devel centos-release-scl devtoolset-7  gcc gcc-c++                                                # 安装gcc等依赖yum remove cmake -yln -s /usr/local/bin/cmake /usr/bin/            # 移除旧版本cmakecdwget work.eisc.cn/ruanjian/rpm/lnmp/cmake-3.19.1.tar.gztar -xvf cmake-3.19.1.tar.gz                            # cmake版本要高于3.10cd cmake-3.19.1 rm -f CMakeCache.txt                                    # 清除历史编译./bootstrap && gmake && gmake install/usr/local/bin/cmake --version                  # 查看编译后的cmake版本# wget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz                                                                        # 安装libeventcdwget work.eisc.cn/ruanjian/rpm/lnmp/libevent-2.1.10-stable.tar.gztar -xvf libevent-2.1.10-stable.tar.gz cd tar -xvf libevent-2.1.10-stable./configure --prefix=/usr --disable-static && make && make installyum install -y centos-release-scl devtoolset-7 # 安装C++高版本gcc --versionscl enable devtoolset-7 bash & echo " 单个 & 符号并列执行 后面的命令"                               ### 使用新版本 gcc 重启失效 ###gcc --version echo "后面的命令没有scl 那样要求中断,所以得到了继续执行"cd  wget http://work.eisc.cn/ruanjian/rpm/lnmp/mariadb-10.5.8.tar.gz# https://downloads.mariadb.org/                                # 官网镜像tar -zxvf mariadb-10.5.8.tar.gzcd mariadb-10.5.8sed -i "s/MYSQL_VERSION_MAJOR.*/MYSQL_VERSION_MAJOR=101/g" VERSION                                                                # 修改版本号sed -i "s/MYSQL_VERSION_MINOR.*/MYSQL_VERSION_MINOR=42/g" VERSION sed -i "s/MYSQL_VERSION_PATCH.*/MYSQL_VERSION_PATCH=63/g" VERSION groupadd -g 41 mysql && useradd -c "MySQL Server" -d /srv/mysql -g mysql -s /bin/false -u 41 mysql                                                                                # 为mariadb创建用户组和用户# sed -i "s@data/test@\${INSTALL_MYSQLTESTDIR}@g" sql/CMakeLists.txt  && mkdir build && cd    buildcmake -DCMAKE_BUILD_TYPE=Release                      \      -DCMAKE_INSTALL_PREFIX=/usr                     \      -DINSTALL_DOCDIR=share/doc/mariadb-10.5.8       \      -DINSTALL_DOCREADMEDIR=share/doc/mariadb-10.5.8 \      -DINSTALL_MANDIR=share/man                      \      -DINSTALL_MYSQLSHAREDIR=share/mysql             \      -DINSTALL_MYSQLTESTDIR=share/mysql/test         \      -DINSTALL_PLUGINDIR=lib/mysql/plugin            \      -DINSTALL_SBINDIR=sbin                          \      -DINSTALL_SCRIPTDIR=bin                         \      -DINSTALL_SQLBENCHDIR=share/mysql/bench         \      -DINSTALL_SUPPORTFILESDIR=share/mysql           \      -DMYSQL_DATADIR=/srv/mysql                      \      -DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock       \      -DWITH_EXTRA_CHARSETS=complex                   \      -DWITH_EMBEDDED_SERVER=ON                       \      -DSKIP_TESTS=ON                                 \      -DTOKUDB_OK=0                       make && make install:<<!                                                            # 多行注释-DCMAKE_INSTALL_PREFIX=                                 指向mysql安装目录-DINSTALL_SBINDIR=sbin                          指向可执行文件目录(prefix/sbin)-DMYSQL_DATADIR=/var/lib/mysql          指向mysql数据文件目录(/var/lib/mysql)-DSYSCONFDIR=/etc/mysql                                 指向mysql配置文件目录(/etc/mysql)-DINSTALL_PLUGINDIR=lib/mysql/plugin    指向插件目(prefix/lib/mysql/plugin)-DINSTALL_MANDIR=share/man                      指向man文档目录(prefix/share/man)-DINSTALL_SHAREDIR=share                        指向aclocal/mysql.m4安装目录(prefix/share)-DINSTALL_LIBDIR=lib/mysql                      指向对象代码库目录(prefix/lib/mysql)-DINSTALL_INCLUDEDIR=include/mysql      指向头文件目录(prefix/include/mysql)-DINSTALL_INFODIR=share/info                    指向info文档存放目录(prefix/share/info)prefix官方推荐设为/usr!install -v -dm 755 /etc/mysql                                   # 创建文件/etc/mysql/my.cnfcat > /etc/mysql/my.cnf << "EOF"# Begin /etc/mysql/my.cnf# The following options will be passed to all MySQL clients[client]#password       = your_passwordport            = 3306socket          = /run/mysqld/mysqld.sock# The MySQL server[mysqld]init-connect='SET NAMES utf8'  character-set-server = utf8port            = 3306socket          = /run/mysqld/mysqld.sockdatadir         = /srv/mysqlskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Msort_buffer_size = 512Knet_buffer_length = 16Kmyisam_sort_buffer_size = 8M# Don't listen on a TCP/IP port at all.#skip-networking# 注意此处 skip 打开会导致 3306端口异常# required unique id between 1 and 2^32 - 1server-id       = 1# Uncomment the following if you are using BDB tables#bdb_cache_size = 4M#bdb_max_lock = 10000# InnoDB tables are now used by defaultinnodb_data_home_dir = /srv/mysqlinnodb_log_group_home_dir = /srv/mysql# All the innodb_xxx values below are the default ones:innodb_data_file_path = ibdata1:12M:autoextend# You can set .._buffer_pool_size up to 50 - 80 %# of RAM but beware of setting memory usage too highinnodb_buffer_pool_size = 128Minnodb_log_file_size = 48Minnodb_log_buffer_size = 16Minnodb_flush_log_at_trx_commit = 1innodb_lock_wait_timeout = 50[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash# Remove the next comment character if you are not familiar with SQL#safe-updates[isamchk]key_buffer = 20Msort_buffer_size = 20Mread_buffer = 2Mwrite_buffer = 2M[myisamchk]key_buffer_size = 20Msort_buffer_size = 20Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout# End /etc/mysql/my.cnfEOF:<<!cd /usr/binmv mysql_install_db mysql_install_db_bakcp /root/mysql_install_db /usr/bin!mysql_install_db --basedir=/usr --datadir=/srv/mysql --user=mysql &&chown -R mysql:mysql /srv/mysql                         # 初始化数据库以及修改所有者权限cp /root/mariadb-10.5.8/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld # update-rc.d mysqld defaults chkconfig --add mysqld /etc/init.d/mysqld restart systemctl status mysqld'/usr/bin/mysqladmin' -u root password 'root'           # 为mysql 设置密码#mysql                                                  # 登录,默认没有密码mysql -e "set password = password('WWWeisccn')"         # 为root 用户设置密码mysql -uroot -pWWWeisccn -e "create database eisc character set utf8 collate utf8_bin;"                                                        # 登录数据库并且创建数据库名字为######################################################################################################################################  防火墙配置  ####systemctl restart firewalldfirewall-cmd --permanent --add-port=3306/tcp            # 开放端口 3306firewall-cmd --permanent --add-port=9000/tcpfirewall-cmd --permanent --add-port=80/tcpsystemctl restart firewalld                             # 重启防火墙firewall-cmd --zone=public --list-ports                 # 列出防火墙已经开放的端口netstat -ntlp                                           # 监听运行中的端口运用####  自动启动配置  #####说明:编译安装的运用reboot 后不会自动启动,所以需要加入开机启动配置文件 /etc/rc.d/rc.localecho "source /etc/profilebash /www/server/StartLnmp.sh" >> /etc/rc.d/rc.localchmod +x /etc/rc.d/rc.localecho "nginxsystemctl restart php-fpm/etc/init.d/mysqld restartecho '   LNMP 启动时间 ==========>> `date`' >> /root/LNMPlog.txt" >> /www/server/StartLnmp.sh##################################################################################################################################elseecho "数据库已经安装"fi}azmariadb## 一键执行脚本: wget eisc.cn/file/shell/centos-LNMP.sh ; sh centos-LNMP.sh
 27   2  1320天前
admin
2912
lv 分区,vg 卷,pv 硬盘;加s 列出,remove 删除 ;如:lvs和 lvremove   #    lvm 核心命令yum install -y lvm2               # 安装 lvm 分区工具parted -s /dev/sda mklabel msdos                                              # 转换为 msdos 格式,否则无法加入lvm ;  gpt动态分区不支持lvmpvcreate /dev/sda                 #  将硬盘加入lvm 分区模式pvs # 查看所有pv硬盘pvs /dev/$disk pvscan # 查看指定pv硬盘vgs                                           # 查看卷组vgextend eisc /dev/sda         # 将硬盘加入 eisc 卷组,然后总容量是各个硬盘容量之和; 如果没有卷组请创建vgcreate -s 16M eisc /dev/sda # 创建一个卷组,大小为16M;名字为:eisc # 并选择的硬盘为:sda   加入eisc卷组   # 新建一个vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv#------- 说明 ---------## lvs/lvscan  # 查看系统里有lv的磁盘# lvdisplay  # 显示系统上面的lv状态,查看分区详情,包括分区目录                                                #  display [dɪˈsple] 显示# lvremove  # 删除lv# lvreduce  # 在lv里减少容量# lvextend  # 增加容量#---------------------#lvcreate -L 60G -n a eisc         # 创建分区,大小为60GB  名字为:a   所属卷组为 eisc   # 新建一个lv,-l指定pe的个数,-L指定容量,M,Glvdisplay                                  # 查看分区详情,包括分区目录 ;    display [dɪˈsple] 显示mkfs -t ext4 /dev/eisc/a          # 格式化分区# lvremove /dev/eisc/a            # 删除分区                              mkdir /www ; mount /dev/eisc/a /www                                         # 创建  www 目录,并挂载分区echo "/dev/eisc/a   /www  ext4 default 0 0  " >> /etc/fstab                                         # 写入开机启动挂载配置文件                                         # 自定义开机启动执行命令:/etc/rc.d/rc.local   写入: bash /www/server/StartLnmp.shmount -a                            # 校验 文件配置是否有误的报错信息#---- 调整分区大小 扩容 ----#umount /dev/eisc/a*           # 取消挂载分区,进行调整分区大小resize2fs /dev/vda1               # Ext*   如ext2  ext3  扩容文件系统xfs_growfs /dev/vda1            # xfs  格式扩容文件系统xfs_growfs /                           # 如果是lvm分区的系统,对root分区扩容,直接扩容根目录# xfs_growfs /dev/mapper/rhel-root 错误扩容,提升错误:xfs_growfs: /dev/rhel/root is not a mounted XFS filesystem 不是已装入的文件系统,提示灭有找到这个分区,请直接扩容根目录  / lvextend -L 70G /dev/eisc/a # 分区扩容增加容量至70GBresize2fs -f /dev/eisc/a        # 扩容文件系统生效# 注意 【lvm 支持扩容,[ 不支持缩减 ],缩减需要格式化分区后才能挂载】# lvreduce -L 50G /dev/eisc/a # 缩减分区空间大小 将上面创建的60GB 最终为50GB# mkfs -t ext4 /dev/eisc/alvcreate -L 60GB -s -n eisc /dev/centos00/root                                          # 创建一个分区快照, -L 60G 表示此次创建快照大小                                           # -s 表示创建快照  -n lv_image_snap 表示新的快照名为lv_image_snap                                           # /dev/vg_image/lv_image 为要创建快照的逻辑卷dd if=/dev/centos00/eisc of=/eisc-images.img                                         # 将分区创建成镜像dd if=/eisc-images.img of=/dev/centos00/test                                         # 将镜像还原到磁盘分区需要fdisk -l 查看LVM硬盘目录,如删除分区:lvremove /dev/mapper/eisc-b #  1.首先 将硬盘加入lvm 才能创建LVM 分区#!/bin/bashcheck(){ #  [ʧɛk] 检查azlvm=$(yum list installed | grep lvm2) # 定义一个名称为azlvm的变量,值为: # 查看已安装的包,grep 匹配lvm 名称cdazlvm=$(echo ${#azlvm}) # 定义一个变量为:打印字符串长度if [ $cdazlvm -lt 1 ] # 判断变量字符串长度小于1then # 然后        yum install -y lvm2         echo "您还没有安装lvm,正在为您安装,请稍后:"else # 其他情况        echo "lvm 已经安装,无需操作,已经安装的信息为: $azlvm"fi # if的结束标记 fi}check ;  # 调用方法函数;函数名放出来才会执行# 2. 输入信息input(){echo "lv 分区,vg 卷,pv 硬盘"lsdisk=$(fdisk -l |  awk -F " " '$1=="Disk" {print i++ " | "  $1 " | "  $2 " | " $3 $4}'  | sed s/\://g ) # 查看所有硬盘 # -F " " 指定分隔符是空格;$1 是第一列;==等于字符串 Disk; 的所有行 # 坐标:行已得到,开始print 打印列; i++ 表示打印序号数数 # " | " 是字符串连接符号  |   ; 打印结果的123列内容 # sed s/\://g  修改冒号为空格,  符号 \  将特殊字符 冒号 转译 lvs=$(lvs |grep "-" | awk -F " " '{print i++ "  |分区:  " $1 "  |卷:  " $2 "  |  "  $3 } ')echo "查看硬盘:$lsdisk查看所有历史分区:$lsDiskCatalog  查看当前存在的VG 卷 和LV分区如下:$lvs"##################   用户输入  ################echo "read 接收窗口命令界面输入的字符串;-p 加文字说明;需要分区的磁盘变量 a如果输入错误字符或者闪跳,请Ctrl +c  退出重新输入请输入你要进行分区的磁盘; 磁盘格式为:sdb "read -p "请输入要分区的磁盘:"  disk ;  echo "磁盘挂载目录格式为:   /www     将会清空该目录下的文件下面功能方法涉及不到的参数请回车跳过"read -p "请输入挂载 [ˈkætəlɔg]目录:"  catalog ;  read -p "请输入逻辑 [ˈvɑljum] 卷的组名称如 eisc 请您输入名字:"  volume ;  read -p "请输入 [pɑrˈtɪʃən]分区唯一名称如 a 请您输入名字:"  partition ;  read -p "请输入分区大小,如: 3G 请您输入:"  size ;  DiskCatalog=$(fdisk -l | grep "\-$partition" | awk -F" " '{print $2}' | sed "s/\://g") # 查看lvm 分区目录;    作为公有变量来使用 # grep 匹配字符包含 -a字 符 字段的行; 特殊转译符号 \;  awk -F " " 指定空格为分隔符 # 直接打印结果中的第二列 # sed "s/\://g"  其中 sed s 修改 g 开启特殊字符转译, 特殊字符转译符号 \  使冒号 : 不被解析;echo "根据您输入的信息先查找的硬盘目录:$DiskCatalog"}# 3. 分区partition(){echo "当前是新建LVM卷和挂载新分区"input ;  # 调用输入函数parted -s /dev/$disk mklabel msdos                                              # 转换为 msdos 格式,否则无法加入lvm ;  gpt动态分区不支持lvmpvcreate /dev/$disk # 创建物理卷,选择的硬盘为 sdc #  create [kriˈet] 创建pvs # 查看所有pv硬盘pvs /dev/$disk pvscan # 查看指定pv硬盘pvdisplay /dev/$disk # 显示系统上面的pv硬盘状态 # display [dɪˈsple] 显示 # pvremove /dev/xxx # 废除pv硬盘格式,(仅需要了解)# # remove [riˈmuv] 废除# pvs/pvscan  # 查看系统里有pv的磁盘# pvdisplay  # 显示系统上面的pv状态vgcreate -s 16M $volume /dev/$disk # 创建一个卷组,大小为16M;名字为:eisc # 选择的硬盘为:sdc # 新建一个vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pvlvcreate -L $size -n $partition $volume # 创建逻辑卷,名字为:a # 新建一个lv,-l指定pe的个数,-L指定容量,M,G# lvs/lvscan  # 查看系统里有lv的磁盘# lvdisplay  # 显示系统上面的lv状态# lvremove  # 删除lv# lvreduce  # 在lv里减少容量# lvextend  # 增加容量mkfs -t ext4 /dev/mapper/$volume-$partition ; mkfs -t ext4 /dev/mapper/$volume-$partition # 格式化分区rm -rf $catalogmkdir $catalog # 创建挂载的目录mount /dev/mapper/$volume-$partition $catalog # 挂载到目录 /wwwdf -h  # 查看挂载的lvm分区sed -i "/#eisc$partition/d" /etc/fstab ; sed -i "/^$/d" /etc/fstab # 挂载删除写记录; 删除空行echo "/dev/mapper/$volume-$partition $catalog ext4 defaults 0 0 #eisc$partition" >> /etc/fstab} # 4. 基本lvm 分区结束,扩容分区和强制调整分区大小PartitionSize(){echo "当前是分区扩容,需要提供大小,分区所属硬盘,挂载目录需要输入大小,和分区名字"input ; # 调用用户输入方法函数;函数名放出来才会执行# 扩容的是文件系统:Filesystem 列,而不是挂着目录resize2fs $DiskCatalog # 更新文件系统的大小,即激活  EXT234格式xfs_growfs $DiskCatalog         # xfs 格式的磁盘df -hTlvs # 查看分区}MandatorySize(){ # [ˈmændəˌtɔri] 强制echo "当前是分区扩容,需要提供大小,分区所属硬盘,挂载目录需要输入大小,和分区名字,挂载目录请注意:需要格式化才能装载(挂载);需要备份数据"input ; catalog=$(df -h | grep "\-$partition" | awk -F" " '{print $6}')umount /dev/mapper/$volume-$partition  $catalog # 取消现有挂载,然后强制设置大小,再然后:lvreduce -L $size /dev/mapper/$volume-$partition  # 强制设置大小;首先需要:# resize2fs /dev/mapper/$volume-$partition  # 生效mkfs -t ext4 /dev/mapper/$volume-$partition # 格式化mount /dev/mapper/$volume-$partition  $catalog # 重新挂载df -h # 再次查看磁盘容量;发现分区已经调整} # 5.LVM 扩容硬盘:多个硬盘加入LVM;# 如果硬盘(硬件)空间不够:vg空间不够,需先扩展vg,扩展vg就是往vg中加pvExpansion(){ #  [ɪkˈspænʃən] 扩容echo "将硬盘加入现有的LVM卷,需要硬盘和卷名称两个参数,其他提示回车跳过。列出当前加入LVM分区的硬盘,和现有的PV卷"pvs # 查看现有pv硬盘:加入lvm的硬盘vgs # LVM卷input ;   # 调用输入函数#--------  转换为 msdos 格式,否则无法加入lvm --------#parted -s /dev/$disk mklabel msdos                                                # 转换为 msdos 格式,否则无法加入lvm pvcreate /dev/$disk # 将硬盘加入lvm, 然后 pvs 再次查看vgextend $volume /dev/$disk # 将硬盘加入 eisc 卷组,然后总容量是各个硬盘容量之和pvs # 再次查看LVM硬盘} # 6.LVM的缩减删除操作 Delete(){ # [dəˈlit] 删除echo "删除操作需要满足先后顺序1.先删除LV分区:只输入分区名字,其他回车跳过2.再删除VG卷:只输入卷名字3.最后删除VG硬盘先后顺序需要提供卷,分区名字,挂载目录"input ; echo "请输入:1删除lv分区,2 删除vg卷,3删除lvm硬盘(取消挂载)"read -p "请输入操作:" rcase "$r" in "1") dcatalog=$(df -h | grep "\-$partition" | awk -F " " '{print $6}') # 查看LVM分区的挂载目录 : "\-" 将特殊字符 -  转译umount $DiskCatalog $dcatalog # 取消挂载的所有分区(lv)才能执行删除lvremove $DiskCatalog # 删除lvm分区 a  ;  简称 lvlvs;;"2")vgremove /dev/mapper/$volume # 删除eisc卷组(逻辑卷); 简称:vgvgsecho "删除了VG卷,请也删除硬盘重新加入LVM,即重新分区;";; "3")pvremove /dev/$disk # 删除lvm 的硬盘; 简称:pvpvs;;*) echo "###########################################################                           输入错误请重新输入###########################################################"Delete;;esac}home(){clear # 清屏echo "欢迎来到小绿叶技术博客www.eisc.cnLVM自动化分区脚本请输入对应数字惊醒操作:1.新建LVM分区                                   2.分区扩容3.减少分区至指定大小                         4.扩容LVM硬盘5.lv vg pv 的删除操作"read -p " 请输入您的操作:" hcase "$h" in"1") partition;;"2") PartitionSize;;"3") MandatorySize;;"4") Expansion;;"5") Delete;;*) echo "输入错误,请重新输入。正在返回主界面"home;;esac}home# 执行脚本:yum install -y wget rm -rf lvmpartition.sh ; wget eisc.cn/file/shell/lvmpartition.sh ; sed -i "/^$/d" lvmpartition.sh ; chmod 755 lvmpartition.sh ; ./lvmpartition.sh
 38   2  1497天前
admin
5332
# parted脚本自动挂载分区磁盘# 1.parted 核心命令  parted gpt 分区支持2T磁盘空间# 卸载磁盘提示 磁盘忙无法卸载。 lsof /data/   ; kill -9 pid ; umout /data  查看挂载目录占用的pid 并kill 后,再卸载partedManual(){#全新磁盘挂载,将vdb 改为您实际的磁盘yum install -y parted                                         # 安装分区工具umount /dev/sda*                                              # 将磁盘 /dev/sda   取消挂载,才能建立 分区表gptparted -s /dev/vdb mklabel gpt                         # 将vdb 转为gpt 动态分区,支持2T以上容量。 注意:这等于格式化整个磁盘parted -s /dev/vdb mkpart primary 2048s 100%                                                                                          # 新建主分区,分区对齐 2048 或者 4096   分配额 100%# parted -s a mkpart entended 3G 5G               # 第一个扩展分区:从3G 到5G# parted -s b mkpart logic 5G 100%                 # 第二个扩展分区:从5G到100%mkfs -t ext4 /dev/vdb1                                    # 格式化主分区 格式 为 ext4 如果读写速度慢,可以格式化为 ntfsmkdir -p /eisc/a                                               # 创建挂载目录  -p 不存在子目录,自动创建子目录mount /dev/vdb1 /eisc/a                                  # 将vdb 挂载到目录:/cipan/vdb1vi /etc/fstab                                                     # 编辑文件命令/dev/vdb1 /eisc/a ext4 defaults 1 1# 复制粘贴这句话# 然后 按键:ecs退出键 , 按 shift 和 : 冒号 wq 保存 mount -a                                                        # 校验配置是否正确命令无报错,可以重启服务器df -hT                                                             # 重启服务器并查看挂载的分区# 已经分区,仅仅挂载到服务器  磁盘存在数据,仅仅挂载磁盘mkdir -p /eisc/a                                       # 创建磁盘存放目录, -p 不存在子目录,自动创建子目录parted -l                                                   # 查看磁盘格式:如:primary  ext4  是主分区。mount /dev/vdb1 /eisc/a                        # 将vdb1 磁盘挂载到    /myfoldel/a   目录。进入这个目录存放文件,占用的是  vdb1 的空间cd /myfoldel/a                                         # 进入挂载目录ls                                                              # 查看数据盘文件vi /etc/fstab                                            # 编辑文件命令/dev/vdb1 /eisc/a ext4 defaults 1 1# 复制粘贴这句话# 然后 按键:ecs退出键 , 按 shift 和 : 冒号 wq 保存mount -a                                              # 校验配置是否正确命令无报错,可以重启服务器df -h                                                      # 重启服务器并查看挂载的分区}# 2. parted 脚本自动分区#!/bin/bashazparted=$(yum list installed | grep parted) # 定义一个名称为azparted的变量,值为: # 查看已安装的包,grep 匹配parted 名称cdazparted=$(echo ${#azparted}) # 定义一个新变量:打印$azparted 变量的字符串长度  echo $(#azparted) if [ $cdazparted -lt 1 ] # 判断变量字符串长度小于1then # 然后        yum install -y parted         echo "您还没有安装parted,正在为您安装,请稍后:"else # 其他情况        echo "parted 已经安装,无需操作,已经安装的信息为: $azparted"fi # if的结束标记 fi#----------------------------------- 检测安装工具向上包结束  -------------------------------echo "未分区的磁盘有: "parted -l | grep -w "unrecognised disk label"echo "read 接收窗口命令界面输入的字符串;-p 加文字说明;需要分区的磁盘变量 a请输入你要进行分区的磁盘; 磁盘格式为:/dev/dev如果输入错误字符或者闪跳,请Ctrl +c  退出重新输入"read -p "请输入要分区的磁盘:"  a ;  echo "磁盘挂载目录格式为:   /www     将会清空该目录下的文件,重复执行脚本,仅仅更改挂载目录,不会更改硬盘数据重启生效。修改的是/etc/fstab"read -p "请输入您要挂载到那个目录:"  m ;  #----------------------------------- 用户输入信息向上结束  -------------------------------gsh=$(parted -s $a print | grep primary || logical ) # 定义一个变量 gsh  ; sed s/[[:space:]]//g 删除空格 # parted -s $a print  打印要分区的磁盘信息$a为 /dev/xxx # 打印信息后去匹配磁盘分区的类型: # primary [ˈprʌɪm(ə)ri] 主分区,类型;logical  [ˈlɒdʒɪk(ə)l] 逻辑分区 # 如果主分区和逻辑分区都不存在,那么就是空盘###### 重点:# parted -s $a print # 选择磁盘,并打印:打印选择的磁盘信息#  awk -F " " '$5=="primary" {print zi++ $6} ' # -F " " 分隔符为空格,  后面有单引号引起来的为坐标:先行后列 # $5 第5列的内容包含有 primary 字符  就被选中 # print 打印第6列,  有多个内容用zi++ 方法来换行打印所有# parted -s /dev/sda print | awk -F " " '$5=="primary" {print c++ $6} 'if [ ${#gsh}  -eq 0 ] # ${#gsh} 变量长度, -eq 小等于 0then echo "磁盘 $a 为空盘,没有找到主分区和逻辑分区,可以进行进行格式化并分区操作,请等待。。。  " else  echo "  # parted -s /dev/xxx   rm 1 磁盘名称: $a  磁盘存在数据,是否继续格式化操作"fiecho "请确认脚本的继续执行 y继续 | 任意字符退出"read gshycase $gshy iny) echo "您确认了继续格式化操作,脚本将继续执行";;*) echo "您否定了格式化操作,不会影响磁盘数据。即将退出脚本。"exit # 直接退出脚本;;esac parted -s $a mklabel gpt         # 格式化为gpt 动态分区,gpt动态分区支持2T # msdos 其他类型 parted -s $a mkpart primary 1 100% # 分区 全部 #parted -s $a mkpart entended 3G 5G  # 第一个扩展分区:从3G 到5G #parted -s $a mkpart logic 5G 100% # 第二个扩展分区:从5G到100% # logic [ˈlɒdʒɪk] 逻辑,分区#-------------------------------------挂载------------------------------------b=$(echo $a"1")mkfs -t ext4 $b # 格式化分区rm -rf $mmkdir $mmount  $b $m # 挂载分区到/www 目录下 # 如果需要挂载到指定目录请创建文件夹后,再将此处的/mnt修改bd=$(echo $b | awk -F"/" 'NR==1{print $3}') # 打印变量,awk 字段处理,-F 指定分隔符为  /  # 坐标:第一行,第3列sed -i "/"eiscparted"/d" /etc/fstab             #先清除启动挂载sed -i "/^$/d" /etc/fstab   # 清除空行echo "$b           $m                            ext4      defaults        0 0 #eiscparted">>/etc/fstab  # 开机自动挂载,字符单独一行,才会保留格式echo "再次查看挂载的磁盘,如果之前有挂载过此硬盘,重启生效挂载到新目录开发商:小绿叶技术博客 www.eisc.cn"df -h# umount /dev/sdb* # 取消挂载磁盘 /dev/sdb 的所有分区# -------------------------------------删除---------------------------------# parted -s /dev/sdb rm 5           # rm删除sdb磁盘编号5的分区 # parted -s /dev/sdb print # 查看分区# parted -s /dev/sdb mklabel msdos # 清除分区表,方便其他工具进行分区# 使用MBR分区表的硬盘最多只能划分4个主分区磁盘,并且MBR最大仅支持2TB的硬盘。# GPT是一种新型磁盘模式,与我们常用的MBR磁盘相比更稳定,自纠错能力更强,一块磁盘上主分区数量不受(4个的)限制,支持大于2T的总容量及大于2T的分区(几乎没有上限,最大支持到128个分区,分区大小支持到256TB)。# 脚本执行:# rm -rf parted.sh ; yum install -y wget ; wget eisc.cn/file/shell/parted.sh ; chmod +x parted.sh ; ./parted.sh
 3   5  1932天前
admin
467
操作说明:1. 需要使用脚本配置选择的浏览器打开网站进行登录,这样就保存伦 cookie, 脚本打开浏览器访问网站就不需要 重新登录,直接访问内容  # ubuntu shell 脚本 #!/bin/bash # cookie : google 浏览器 > 隐私和安全 > 第三方cookie > 允许第三方cookie # 网站设置 > 自动撤销网站使用权限 # 设置要打开的网页URL urllist=( eisc.cn work.eisc.cn 0 ) MycookieDir=./test/Mycookie sudo mkdir -p $MycookieDir sudo chmod 777 -R $MycookieDir echo "" > ./chrome_pid_16666.pid # 设置Google Chrome浏览器的路径(请根据实际情况修改) chrome_path="/usr/bin/google-chrome" #chrome_path="/opt/google/chrome/chrome" # 打开网页并进入无限循环 while true; do # 打开网页 ((count++)) PID=16666 for urli in ${urllist[*]} do # nohup $chrome_path --new-window "$urli" --profile-directory="Default" --user-data-dir=$MycookieDir/chrome_$PID > /dev/null 2>&1 & echo $! >> chrome_pid_$PID.pid # 这个是不共享 cookie ,而指定新的 cookie 的目录 nohup $chrome_path --new-window "$urli" --profile-directory="Default" --remote-debugging-port=9222 > /dev/null 2>&1 & echo $! >> chrome_pid_$PID.pid # 等待1分钟(60秒) t=2 for((i=1;i>0;i--)) do echo "等待 $t 秒后打开新网页网页 $urli" sleep $t done if [[ $urli = 0 ]] then echo "网页已经全部打开等待 $settime 秒钟后关闭重新打开" for((ti=900;ti>1;ti--)) do echo "当前时间剩余: $ti 秒钟" sleep 1 done IDlist=(`wmctrl -l | grep Chrome | awk -F" " '{print $1}'`); echo ${IDlist[*]} for((id=1;id<${#IDlist[*]};id++)) do # 从1 开始,是不关闭开始打开的登录页面 echo "xdotool windowclose ${IDlist[$id]} " xdotool windowclose ${IDlist[$id]} ; sleep 0.1 done fi done if [[ $count > 0 ]] then echo "break 将其注释掉,会一直跑" #break # 将其注释掉,会一直跑 fi done # sudo apt-get install xdotool wmctrl -y # wmctrl -l # 查询打开的窗口 # xdotool windowclose 0x04b84012 # 关闭窗口 0x04b84012 # window_id=$(xdotool getactivewindow)# 获取当前动态窗口ID # https://lms.ouchn.cn/course/60000065150/learning-activity/full-screen#/60003505217 https://lms.ouchn.cn/course/60000065150/learning-activity/full-screen#/60003505224 https://lms.ouchn.cn/course/60000065150/learning-activity/full-screen#/60003505247 https://lms.ouchn.cn/course/60000065150/learning-activity/full-screen#/60003505305 https://lms.ouchn.cn/course/60000065150/learning-activity/full-screen#/60003505334 https://lms.ouchn.cn/course/60000065150/learning-activity/full-screen#/60003505378 https://lms.ouchn.cn/course/60000065445/learning-activity/full-screen#/60004041602 https://lms.ouchn.cn/course/60000065445/learning-activity/full-screen#/60004041550 https://lms.ouchn.cn/course/60000065445/learning-activity/full-screen#/60004041553 https://lms.ouchn.cn/course/60000065445/learning-activity/full-screen#/60004041561 https://lms.ouchn.cn/course/60000065445/learning-activity/full-screen#/60004041575 0 #--------- windows bat 脚本 -----------#@echo off setlocal EnableDelayedExpansion :: 设置要打开的网页URL,注意空格和0的表示 set "urllist= eisc.cn work.eisc.cn 0" :: 设置Mycookie目录 set "MycookieDir=.\test\Mycookie" if not exist "!MycookieDir!" mkdir "!MycookieDir!" :: 创建一个文本文件来存储Chrome进程ID echo. > chrome_pid_16666.pid :: 设置Google Chrome浏览器的路径(请根据实际情况修改) ::set "chrome_path=C:\install\browser\Chrome\Application\chrome.exe" set "chrome_path=C:\Program Files\Google\Chrome\Application\chrome.exe" ::set "chrome_path=C:\Users\liufang\AppData\Local\Google\Chrome\Application\chrome.exe" :: 无限循环 :loop :: 清空屏幕 cls :: 打开网页 set /a count+=1 :: 计数,下面函数判断这个变量在规定多少次就被退出 set "PID=16666" for %%i in (!urllist!) do ( echo 打开域名: "%%i" start "" "!chrome_path!" --new-window "%%i" >nul 2>&1 echo Process ID: !PID! >> chrome_pid_!PID!.pid :: 等待1分钟(2秒) set /a t=2 for /L %%j in (1,1,2) do ( echo 等待 !t! 秒后打开新网页 %%i ping -n 2 127.0.0.1 >nul set /a t+=1 ) :: 检查是否为结束标记 if "%%i"=="0" ( echo 网页已经全部打开,等待900秒钟后关闭重新打开 set /a ti=300 :wait if !ti! leq 0 goto closechrome echo 当前时间剩余: !ti! 秒钟 set /a ti-=1 ping -n 2 127.0.0.1 >nul goto wait ) ) :: 关闭Chrome窗口 :closechrome echo Closing all Chrome windows... tasklist /fi "imagename eq chrome.exe" | find /i "chrome.exe" > chrome_list.txt :: tasklist 列出任务进程 for /f "tokens=1" %%a in (chrome_list.txt) do ( echo Closing window with PID %%a taskkill /f /pid %%a :: 关闭任务进程 ) del chrome_list.txt :: 检查是否需要退出循环 if !count! gtr 0 ( echo break 将其注释掉,会一直跑 rem break # 将其注释掉,会一直跑 ) :: 等待5秒后继续 timeout /t 5 >nul goto loop endlocal
 2   0  47天前
admin
323
#! /bin/bash total_steps=100 for ((step=1; step<=total_steps; step++)); do printf "\rProgress: [%-50s] %d%%" $(printf "#%.0s" $(seq 1 $((step*50/total_steps)))) "$((step*100/total_steps))" sleep 0.1 # 模拟操作延迟 done printf "\n"
 0   0  136天前
admin
328
#!/bin/bash # systemd 开机启动服务 echo "############# 宿主机 设置 bois 上电开机,和 systemd 开机启动服务 ####################" echo " 步骤1:进入BIOS界面 重启计算机并在开机过程中按下相应的按键(通常是Del、F2、F10等)来进入BIOS界面。这个按键可能因计算机品牌而异。 步骤2:寻找电源恢复选项(或者电源管理) 在BIOS界面中,浏览各个选项寻找与电源恢复相关的设置。通常,这个选项会被标记为“AC Power Recovery”、“Power on after power failure”等。 " echo " # 端口代理 stream { upstream www22 { server 192.168.122.80:22; } upstream www62010 { server 192.168.122.80:62010; } upstream www62011 { server 192.168.122.80:62011; } upstream www3000 { server 192.168.122.80:3000; } upstream www3306 { server 192.168.122.80:3306; } upstream TXvpn { server 192.168.122.81:22; } upstream win3389 { server 192.168.122.100:3389; } server { listen 10080; proxy_pass www22; } server { listen 62010; proxy_pass www62010; } server { listen 62011; proxy_pass www62011; } server { listen 3000; proxy_pass www3000; } server { listen 3306; proxy_pass www3306; } server { listen 10081; proxy_pass TXvpn; } server { listen 13389; proxy_pass win3389; } } " os_release() { if [ $USER = "root" ] then sudoc=" " # 判断字符串的等号要加空格,否则无法判断 else sudoc="sudo" echo "当前为普通用户,需要输入root 密码... $sudoc" $sudoc date ; fi xitong=` cat /etc/os-release | grep -w ID | awk -F"=" '{print $2}' | sed "s/\"//g" ` case "$xitong" in "centos" ) aptc="yum" ; dpkgc="rpm -qa " ; echo "当前是 centos 系统" ;; "ubuntu" ) aptc="apt" ; dpkgc="dpkg -l " ; echo "当前是 ubuntu 系统" ;; esac } os_release kaiji_web_service(){ # ubuntu 以 systemd 服务方式,自动启动服务软件 systemdDir="/usr/lib/systemd/system" ServiceName="eisc_web_start.service" cd $systemdDir ; $sudoc touch $ServiceName ; $sudoc chmod 777 $ServiceName #----- 写入 start.service 服务 -----# echo " [Unit] Description=start web [Service] Type=forking ExecStart=/etc/init.d/shell/start.sh ExecReload=/bin/kill -SIGHUP \$MAINPID ExecStop=/bin/kill -SIGINT \$MAINPID [Install] WantedBy=multi-user.target " > $ServiceName $sudoc apt install dos2unix -y $sudoc dos2unix $ServiceName # 转为 unix 格式,否则可能出现字符乱码 $sudoc chmod 644 $ServiceName $sudoc systemctl daemon-reload $sudoc systemctl disable $ServiceName $sudoc systemctl enable $ServiceName cd } kaiji_start_web_sh(){ $sudoc mkdir -p /etc/init.d/shell/ ; $sudoc chmod 777 /etc/init.d/shell/ if [ ! -e /etc/init.d/shell/openvpn_connect.sh ] then wget eisc.cn/file/ubuntu/shell/server/openvpn_connect.sh -O /etc/init.d/shell/openvpn_connect.sh fi read -p "是否继续进行配置 systemd 开机启动? y/n: " kaijisz if [ "$kaijisz" = "y" ] then kaiji_web_service # 启动这个函数 $sudoc mkdir -p $installdir/shell ; $sudoc chmod 777 -R $installdir/shell # 将脚本授权给 root 用户 echo "#!/bin/bash # bash 解释器 一定要在第一行 开头写,否则下面脚本不执行,开机启动不成功。 由于是 service服务,因此此脚本是 root 用户执行 #mount -t nfs -o rw,hard,intr 192.168.122.1:/datadisk/eisc /datadisk/eisc/ ; sleep 2 # /datadisk/eisc/server/nginx/nginx199/sbin/nginx & # /datadisk/eisc/server/gitea/gitea & virsh start ubuntu20_Tencent_VPN virsh start www virsh start win10 # 宿主机启动 #/etc/init.d/shell/openvpn_connect.sh & # vpn 服务器 touch $HOME/log_start_web.txt ; chmod 777 $HOME/log_start_web.txt " > /etc/init.d/shell/start.sh echo "#----------------- 查看写入的开机启动脚本 -------------------#" cat /etc/init.d/shell/start.sh $sudoc chmod +x /etc/init.d/shell/* $sudoc chown -R root:root /etc/init.d/shell/* ; $sudoc chmod 777 -R /etc/init.d/shell/* else echo "[ok]目前不配置systemd " fi } kaiji_start_web_sh
 0   1  136天前
admin
363
#!/bin/bash # auto connect vpn . get internal network connection [inˈ tər nl in tor no 内部] VPNfile=/datadisk/eisc/vpn/data.ovpn pingIP=10.1.1.1 chmod 777 $VPNfile debList=( openvpn ) download_deb(){ for i in ${debList[*]} do debname=`echo $i | awk -F"_" '{print $1}'` debnameInstalled=` dpkg -l | grep -w "$debname" | awk -F" " '{print $2}' ` debnameInstalledLength=${#debnameInstalled} if [ $debnameInstalledLength -gt 1 ] then echo "[ok] 该包 $i 已经安装,安装信息: $debnameInstalled" else echo "[runing] 正在检查是否下载安装包: $i" if [ ! -e $i ] then echo "[runing] 当前没有下载,正在下载包:$i" case "$i" in "openvpn") apt install -y openvpn ;; *) echo "该包没有定义下载地址,包: $i" esac else echo "[ok] 已经安装: $i " fi fi done } connect() { echo "正在检测网络是否和 google 官方通畅...... " ping -c 2 $pingIP | grep from if [ $? != 0 ] then status="[running] google 网络不通,正在连接自建 openvpn 服务器..." killall openvpn ; openvpn $VPNfile > /dev/null & sleep 20 else status="[ok] 与 google 网络通信正常!" fi # 将ping -c 2 ping 两次; -i 每次间隔; -w 总共等待时间; vpn 连接上后需要等待一些时间 # $? 是上一个程序执行是否成功的标志,如果执行成功则$? 为0,否则 不为0 # 运行到此情况(网络异常ping不通);就全局退出脚本 [ˈɛgzɪt] exit 出口 # 正常情况不仅仅打印一句话,然后继续往下执行 } main() { download_deb for((;;)) do connect ; sleep 3 ((i++)) echo "当前尝试次数 : $i 状态: $status" done } main
 0   0  151天前
admin
752
步骤1:进入BIOS界面重启计算机并在开机过程中按下相应的按键(通常是Del、F2、F10等)来进入BIOS界面。这个按键可能因计算机品牌而异。步骤2:寻找电源恢复选项(或者电源管理)在BIOS界面中,浏览各个选项寻找与电源恢复相关的设置。通常,这个选项会被标记为“AC Power Recovery”、“Power on after power failure”等。
 1   0  298天前
admin
902
#!/bin/bash # centos or ubuntu 安装 vscode 配置 gcc g++ cmake 开发环境 UrlTest() { URLList=( 192.168.122.80 10.111.111.80 82.157.148.144 ) number="kong"; for(( i=0;i<${#URLList[*]};i++ )) do pinLG=`ping -c2 -i0.3 -w2 ${URLList[$i]} | grep from` if [ ${#pinLG} -gt 6 ] then number=$i status="加速节点通信正常,当前内网连接: ${URLList[$i]} 序号: $number " echo "加速节点 [ok]" break else status="并非处于加速节点: ${URLList[$i]} 将从外网进行下载 work.eisc.cn " echo "加速节点 [fall]" fi done if [ $number = "kong" ] then url="work.eisc.cn" else url="${URLList[$number]}:62011" read -p "是否从加速节点下载: $url y/n? : " selectURL if [ $selectURL = "y" ] then echo "[ok] download URL = $url" else url="work.eisc.cn" echo "你取消了加速节点,将从外网下载 : $url" fi fi urlDir="/ruanjian/ubuntu/server/cmakegcc" downUrl=$url$urlDir echo "$status 下载地址: $downUrl" } UrlTest TarList=( cmake_release make_release gmp_release mpfr_release mpc_release freetype_release gcc_release ) installDirSelect() { echo "选择安装路径: 1. 安装到建议路径: /datadisk/eisc/ 然后自动创建的目录是: /datadisk/eisc/server 安装到 /datadisk/eisc/server/cmake/ 目录下! 2. 安装到当前目录 下的 ./server/cmake 目录下,脚本所在位置 3. 任意按键退出安装! " read -p " select number: " runIF case "$runIF" in "1") echo "[running] 安装到目录: /datadisk/eisc/server/cmake/ " ; localDir="/datadisk/eisc" ;; "2") echo "[running] 选择当前目录安装: ./server/cmake " ; localDir=`pwd` ;; *) echo "exit" ;exit ;; esac sleep 5 downDir="$localDir/download/cmake" installDir="$localDir/server/cmake" gccSoDir="$installDir/so/gcc" } cmake_release() { ReleaseMl="cmake-3.27.0-rc4-linux-x86_64" ReleaseInstall="cmake327" ReleaseBin="cmake" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } make_release() { ReleaseMl="make-4.4" ReleaseInstall="make44" ReleaseBin="make" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } gmp_release() { ReleaseMl="gmp-6.2.1" ReleaseInstall="gmp621" ReleaseBin="gmp" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } mpfr_release() { ReleaseMl="mpfr-4.2.0" ReleaseInstall="mpfr420" ReleaseBin="mpfr" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } mpc_release() { ReleaseMl="mpc-1.2.1" ReleaseInstall="mpc121" ReleaseBin="mpc" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } freetype_release() { ReleaseMl="freetype-2.9" ReleaseInstall="freetype29" ReleaseBin="freetype" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } gcc_release() { ReleaseMl="gcc-13.1.0" ReleaseInstall="gcc1310" ReleaseBin="mpc" Down="$downUrl/$ReleaseMl.tar.gz" echo "cmake 下载地址重新定义为:$Down" } downloadGF=( http://mirror.linux-ia64.org/gnu/gcc/releases/gcc-13.1.0/gcc-13.1.0.tar.gz https://ftp.gnu.org/gnu/make/make-4.4.tar.gz https://www.mpfr.org/mpfr-current/mpfr-4.2.0.tar.gz http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2 http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2 http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.24.tar.bz2 https://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.gz ) os_release() { if [ $USER = "root" ] then qx=" " # 判断字符串的等号要加空格,否则无法判断 else qx="sudo" echo "当前为普通用户,需要输入当前用户密码,如果当前用户没有 sudo 权限,请切换到 root 用户进行安装..." sudo date fi xitong=` cat /etc/os-release | grep -w ID | awk -F"=" '{print $2}' | sed "s/\"//g" ` case "$xitong" in "centos" ) iCMD="yum" ; rpmCMD="rpm -qa " ; echo "当前是 centos 系统" ; $qx $iCMD install -y openssl-devel gcc gcc-c++ g++ cmake make wget nano libmpfr-dev m4 gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel bzip2 git ;; "ubuntu" ) iCMD="apt" ; rpmCMD="dpkg -l " ; echo "当前是 ubuntu 系统" ; $qx $iCMD install -y gcc g++ cmake make wget nano libmpfr-dev m4 bzip2 git ;; esac $qx mkdir -p $downDir $installDir $gccSoDir ; $qx chmod 777 -R $dir $installDir $gccSoDir } download() { cd $downDir ; echo "当前进入目录进行下载: cd $downDir " for i in ${TarList[*]} do $i # 执行函数变量 echo "[runing] 正在检查是否下载安装包: $ReleaseMl.tar.gz" [ ! -d $installDir/$ReleaseInstall ] && echo "[running] 目标安装路径不存在" || break ; if [ ! -f $ReleaseMl.tar.gz ] then echo "[runing] 当前没有下载,正在下载包:wget $Down " $qx wget $Down -O $Down else echo "[ok] 已经下载: $downDir/$ReleaseMl.tar.gz" fi echo "检测是否解压... " if [ ! -d $installDir/$ReleaseInstall ] then echo "[running] 正在解压 $downDir/$ReleaseMl.tar.gz 到目录: $installDir/$ReleaseMl" ; $qx tar -xzvf $downDir/$ReleaseMl.tar.gz -C $installDir/ $qx mv $installDir/$ReleaseMl $installDir/$ReleaseInstall else echo "[ok] 已经解压 : $downDir/$ReleaseInstall " fi done } Finstall(){ for i in ${TarList[*]} do $i MakeFlag=1; soFlag=1 echo "当前正在安装 $i" ; sleep 1; case "$ReleaseInstall" in "gmp621") [ ! -f $gccSoDir/$ReleaseInstall.installd ] && soFlag=1 || soFlag=0 ;; "mpfr420") [ ! -f $gccSoDir/$ReleaseInstall.installd ] && soFlag=1 || soFlag=0 ;; "mpc121") [ ! -f $gccSoDir/$ReleaseInstall.installd ] && soFlag=1 || soFlag=0 ;; "make44") [ ! -f $installDir/$ReleaseInstall/make ] && soFlag=1 || soFlag=0 ; Fpath ;; "gcc1310") [ ! -f $installDir/$ReleaseInstall/bin/gcc ] && soFlag=1 || soFlag=0 ; Fpath ;; "cmake327") Fpath ;; "freetype29") soFlag=0;; esac if [[ ! -f $installDir/$ReleaseInstall/bin/$ReleaseBin ]] && [[ $soFlag = "1" ]] then cd $installDir/$ReleaseInstall echo "[waring] 包没有安装 $installDir/$ReleaseInstall/bin/$ReleaseBin 当前进入目录: $installDir/$ReleaseInstall " ; case "$ReleaseInstall" in "gcc1310") $qx ./configure --prefix=$installDir/$ReleaseInstall --with-gmp=$gccSoDir --with-mpfr=$gccSoDir --with-mpc=$gccSoDir --disable-multilib ; # $qx ./contrib/download_prerequisites # 检测依赖包 $qx ./contrib/download_prerequisites ; $qx make -j 4 ; $qx make install ; Fpath ;; "cmake327") Fpath ;; "gmp621" ) $qx ./configure --prefix=$gccSoDir; $qx make -j 4 ; $qx make install ; $qx touch $gccSoDir/$ReleaseInstall.installd ; MakeFlag=0; Fpath ;; "mpfr420" ) $qx ./configure --prefix=$gccSoDir; $qx make -j 4 ; $qx make install ; $qx touch $gccSoDir/$ReleaseInstall.installd ; MakeFlag=0 ;; "mpc121" ) $qx ./configure --prefix=$gccSoDir; $qx make -j 4 ; $qx make install ; $qx touch $gccSoDir/$ReleaseInstall.installd ; MakeFlag=0 ;; *) echo "未定指定编译,走通用编译方法..." ; $qx ./configure --prefix=$installDir/$ReleaseInstall ; $qx make -j 4 ; $qx make instlal; Fpath ;; esac if [ $MakeFlag = "1" ] then $qx ./configure ; $qx make -j 2 ; $qx make install fi else echo "[ok] 已经安装: $installDir/$ReleaseInstall" fi done } # cd ~/public/ ; git pull ; ./sh/cmakegcc.sh Fpath() { $qx chmod 777 /etc/profile StrCmake=`cat /etc/profile | grep $ReleaseInstall` StrCmakeLength=${#StrCmake} if [ $StrCmakeLength -lt 1 ] then case "$ReleaseInstall" in "gmp621") echo "#### $ReleaseInstall ####" >> /etc/profile ; $qx echo "export LD_LIBRARY_PATH=$gccSoDir/lib:\$LD_LIBRARY_PATH" >> /etc/profile ; echo "[running] 最后一次写入环境变量,即将更新。退出并且自动刷新 $ReleaseInstall 环境变量 /etc/profile 请重新执行本脚本!" ; echo "错误: cc1plus: error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory"; echo "需要退出ssh后重新登陆,环境变量原因 /etc/profile ; 并且执行命令: source /etc/profile ; bash" cd ; $qx chmod 644 /etc/profile $qx source /etc/profile & bash ; echo "[ok] set /etc/profile" ;; "cmake327") $qx echo "#### $ReleaseInstall ####" >> /etc/profile ; $qx echo "export CMAKE_HOME=$installDir/$ReleaseInstall/bin" >> /etc/profile ; $qx echo "export PATH=\$CMAKE_HOME:\$PATH" >> /etc/profile ;; "make44") $qx echo "#### $ReleaseInstall ####" >> /etc/profile ; $qx echo "export MAKE_HOME=$installDir/$ReleaseInstall/bin" >> /etc/profile ; $qx echo "export PATH=\$MAKE_HOME:\$PATH" >> /etc/profile ;; "gcc1310") $qx echo "#### $ReleaseInstall ####" >> /etc/profile ; $qx echo "export GCC_HOME=$installDir/$ReleaseInstall/bin" >> /etc/profile ; $installDir/$ReleaseInstall/bin/gcc -v ; echo "查看 gcc 版本!" $qx echo "export PATH=\$GCC_HOME:\$PATH" >> /etc/profile ; $qx chmod 777 /etc/profile $qx source /etc/profile & bash ; echo "[ok] set /etc/profile" ;; esac # 指定目录可以 写一行,指定运行文件需要两行:目录+执行路径 else echo "[ok] 环境变量已经配置,继续向下执行..." fi # export LD_LIBRARY_PATH=/path/to/libmpfr.so.6:$LD_LIBRARY_PATH } DockerInstall() { $qx $iCMD install -y docker-io $qx touch /etc/docker/daemon.json $qx chmod 777 /etc/docker/daemon.json echo -e " { \"registry-mirrors\": [\"https://hub-mirror.c.163.com\"] } " > /etc/docker/daemon.json $qx chmod 644 /etc/docker/daemon.json $qx systemctl daemon-reload $qx systemctl restart docker $qx systemctl enable docker $qx gpasswd -a $USER docker ; newgrp docker } DockerRun() { read -p "输入 :" input name=${input[0]} image=${input[1]} SourcePort=${input[2]} DestPort=${input[3]} $qx docker run --privileged=true -dit -p $SourcePort:$DestPort --name $name $image /usr/sbin/init #$qx docker run --privileged -dit -p 10022:22 -p 10080:80 --name eisc centos:7 /usr/sbin/init } main() { installDirSelect os_release download Finstall } main # gcc参考文档: https://gcc.gnu.org/onlinedocs/ # 一键部署: wget eisc.cn/file/ubuntu/shell/server/cmakegcc.sh ; sudo chmod +x cmakegcc.sh ; ./cmakegcc.sh
 2   0  384天前
admin
1227
#!/bin/bash # ubuntu20 shell 脚本自动配置 gitea git 仓库 # time: 2023.2.26 downdir="/datadisk/eisc/download" ; sudo mkdir -p $downdir ; sudo chmod 777 -R $downdir installdir="/datadisk/eisc/server" ; sudo mkdir -p $installdir # 安装路径不能将所有目录都为 777 , 如: mysql 的 /etc/my.cnf 不能为 777 否则mysql 无法启动 echo " 欢迎使用自动 shell 脚本自动配置 gitea git 仓库 server 源码下载路径:$downdir server 安装路径:$installdir C 2022.12.04 小绿叶技术博客 eisc.cn " sleep 2; down_guanfang_url(){ giteaUrl="https://dl.gitea.com/gitea/1.18.5/gitea-1.18.5-linux-amd64" } down_eisc_url(){ giteaURL="http://work.eisc.cn/ruanjian/ubuntu/c/git/gitea" } down_select(){ read -p "选择下载安装包地址: 1 官方下载 2 小绿叶技术博客下载. 请输入: " selectURL case $selectURL in "1") echo "当前选择官方下载..." ; down_guanfang_url ;; "2") echo "当前选择小绿叶技术博客下载..." ; down_eisc_url ;; *) echo "输入错误,请重新执行脚本! " ; exit ;; esac echo $gitea } gitea_install(){ sudo apt install git supervisor -y git --version if [ ! -e $downdir/gitea/gitea ] then sudo mkdir $downdir/gitea ; sudo chmod 777 $downdir/gitea wget -O $downdir/gitea/gitea $giteaURL else echo "[ok] 已经下载包: $downdir/gitea/gitea " fi if [ ! -e $installdir/gitea/gitea ] then sudo mkdir $installdir/gitea ; sudo chmod 777 $installdir/gitea cp $downdir/gitea/gitea $installdir/gitea/gitea else echo "[ok] 已经安装包: $installdir/gitea/gitea " fi } gitea_user(){ # gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2 # gpg --verify $installdir/gitea/gitea.asc $installdir/gitea/gitea # gpg 签名密钥箱,防篡改 sudo adduser \ --system \ --shell /bin/bash \ --gecos 'Git Version Control' \ --group \ --disabled-password \ --home /home/git \ git # 创建gitea用户 sudo mkdir -p /var/lib/gitea/{custom,data,log} sudo chown -R git:git /var/lib/gitea/ sudo chmod -R 750 /var/lib/gitea/ sudo mkdir /etc/gitea sudo chown root:git /etc/gitea sudo chmod 770 /etc/gitea # 创建工作路径 sudo chmod 750 /etc/gitea sudo chmod 640 /etc/gitea/app.ini # 写入权限 } gitea_service(){ # ubuntu 以 systemd 服务方式,自动启动服务软件 # gitea_user # 配置 gitea 用户和目录 sudo touch $systemdDir/$webname ; sudo chmod 777 $systemdDir/$webname sudo chmod +x $giteaRun sudo mkdir -p /var/lib/gitea/ ; sudo chmod 644 /var/lib/gitea/ sudo mkdir -p $installdir/shell ; sudo chmod 777 -R $installdir/shell echo "#!/bin/bash # bash 解释器 一定要在第一行 开头写,否则下面脚本不执行,开机启动不成功。 由于是 service服务,因此此脚本是 root 用户执行 $giteaRun & " > $installdir/shell/gitea_start.sh sudo chmod +x $installdir/shell/gitea_start.sh sudo chown root:root $installdir/shell/gitea_start.sh $giteaRun # 可执行文件 和 脚本属性是 root 用户才能开机启动 #----- 写入 start.service 服务 -----# echo " [Unit] Description=gitea [Service] Type=forking #ExecStart=$installdir/shell/gitea_start.sh ExecStart=/bin/gitea ExecReload=/bin/kill -SIGHUP \$MAINPID ExecStop=/bin/kill -SIGINT \$MAINPID [Install] WantedBy=multi-user.target " > $systemdDir/$webname sudo apt install dos2unix -y sudo dos2unix $systemdDir/$webname # 转为 unix 格式,否则可能出现字符乱码 sudo chmod 644 $systemdDir/$webname sudo systemctl daemon-reload sudo systemctl disable $webname sudo systemctl enable $webname sudo systemctl start $webname # 启动服务名称,不用加路径,配置了 service 相当于配置了环境变量,可以直接启动/停止服务名称 cd ~ # 配置 gitea 开机启动 sudo mkdir -p /home/git/gitea/log/supervisor # 配置日志服务 sudo chmod 777 /etc/supervisor/supervisord.conf echo " [program:gitea] directory=/home/git/go/src/github.com/go-gitea/gitea/ command=/home/git/go/src/github.com/go-gitea/gitea/gitea web autostart=true autorestart=true startsecs=10 stdout_logfile=/var/log/gitea/stdout.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/var/log/gitea/stderr.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB user = git environment = HOME="/home/git", USER="git" " > /etc/supervisor/supervisord.conf sudo chmod 644 /etc/supervisor/supervisord.conf sudo systemctl enable supervisor sudo systemctl start supervisor } gitea_if_service(){ giteaRun="$installdir/gitea/gitea" systemdDir="/usr/lib/systemd/system" webname="gitea.service" if [ ! -e $systemdDir/$webname ] then echo "[runing] 开始配置gitea.service 开机启动..." gitea_service else echo "[ok] 已经配置 gitea.service 开机启动, 是否重新配置 开机启动?" read -p "input y/n? : " xz if [ "$xz" = "y" ] then echo "[runing] 开始配置gitea.service 开机启动..." gitea_service else echo "[ok] 已经配置过gitea 开机启动,不需要重新配置!" fi fi } main(){ down_select gitea_install gitea_if_service } main # echo "" > gitea.sh ; nano gitea.sh ; sudo chmod +x gitea.sh ; ./gitea.sh
 4   0  505天前
admin
1247
#!/bin/bash # databases out save # developer : eisc.cn # 开发: 小绿叶技术博客; 功能:shell 自动导出数据库,将导出的格式为 : 数据库名+时间.sql echo "linux user: $USER ; Enter the current user sudo password: " ; sudo date ; formatdate=`date +%Y.%m.%d-%H%M%S` ; echo "time year month day Hour branch second: $formatdate " dir=/datadisk/eisc/back/sql sudo mkdir -p $dir ; sudo chmod 777 $dir # 数据库导出文件保存目录, 创建这个目录,和附加权限 DestDir=/datadisk/eisc/back/sql DestDBName=(`ls $DestDir | grep "sql" | grep -vE "tar|gz|zip|sh"`) # 目标服务器,需要导入的数据库文件。根据实际存放目录修改 # user=root # passwd=eisc.cn # dataip=127.0.0.1 # 脚本中配置 数据库用户名 和密码 和数据库链接地址 if [ "$user"="" ] then echo "请输入数据库管理员用户和密码以及ip, 案例:root eisc.cn 127.0.0.1 Please enter the database administrator user and password and ip, case: root eisc.cn 127.0.0.1 " read -p "input: " inputuser else echo "[ok] 已经定义过 user 和 passwd 的值!" fi inputuser=($inputuser) user=${inputuser[0]} passwd=${inputuser[1]} dataip=${inputuser[2]} export_databases(){ databases=(`mysql -u $user -p$passwd -e "show databases;"`) NoOutDatabases=(Database information_schema mysql performance_schema sys ) # 这是系统库,不是项目中的数据库。只需要导出项目库 echo "databases is : ${databases[*]} NoOutDatabases is : ${NoOutDatabases[*]} " sudo tar -czvf $dir/sqlback_$formatdate.tar.gz $dir ; sudo rm -rf $dir/* for i in ${databases[*]} do echo "#-------- database $i -----------# " for o in ${NoOutDatabases[*]} do case "$i" in "$o") echo " [ok] $i : The current database does not need to be exported!" ; OutStatus=0 ; echo "" ;echo "" ;; esac done if [ "$OutStatus" = "1" ] then sql="sudo mysqldump --column-statistics=0 -h $dataip -u $user -p$passwd --databases $i" echo "[runing] shell cmd: $sql" ; echo "" $sql > $dir/$i-$formatdate.sql # mysqldump 不支持有变量的数据库,因此赋值为字符串 # 因为新版的mysqldump默认启用了一个新标志,通过- -column-statistics=0来禁用他 else echo "[ok] $i Database does not need to be saved" fi OutStatus=1 # 状态 为 1 才进行导出数据,由于受到 NoOutDatabases 不导出影响,会被定义为 0. 最后再次将状态更新为正常 1 # 注意: shell if 判断的时候需要在变量和值加双引号,否则异常 done echo "数据库导出保存目录: $dir 将目录 $dir 备份为:sqlback_$formatdate.tar.gz" ls -alh $dir } mysql_database_tools(){ #!/bin/bash # shell 自动创建数据库 用户和密码 sudo apt install libncurses* # 解决mysql 命令报错,缺少库:Couldn't find any package by glob 'libncurses.so.5' sudo apt install mysql-client -y # 安装连接数据库工具 sudo mkdir /var/run/mysqld/ sudo ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock # 解决 mysql 报错,无法进入mysql 。 mariadb 的启动sock 不一样 runmysql=`sudo netstat -nltp | grep 3306 | grep -w tcp | grep mariadb` if [ ${#runmysql} -lt 1 ] then sudo /etc/init.d/mariadb1011 start fi sudo $installdir/mysql/mariadb1011/bin/mysqladmin -u root password eisc.cn # 启动数据库,重置数据库 root 用户密码为: eisc.cn echo "#---------------- 数据库管理工具 ------------# 参考输入案例: create eisc.cn www www 000000 localhost 1 创建 or 删除,输入: create 或 drop 2 数据库 root 用户密码 3 子数据库名 4 子库用户名 5 子库密码 6 开放数据库方式:本地/远程 输入: localhost 或 % 用空格隔开,必须按照顺序输入6个参数!" read -p "请输入:" in_buff buff=( abcd $in_buff); echo "你输入的信息为: ${buff[*]}"; case ${buff[1]} in "create") # mysql -uroot -p${buff[2]} -e "create database ${buff[3]} character set utf8 collate utf8_bin;" mysql -uroot -p${buff[2]} -e "create database ${buff[3]} character set utf8;" mysql -uroot -p${buff[2]} -e "grant all on ${buff[4]}.* to '${buff[4]}'@'${buff[6]}' identified by '${buff[5]}'" mysql -uroot -p${buff[2]} -e "show databases;SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS ListUsername FROM mysql.user where User='${buff[4]}';" ;; "drop") mysql -uroot -p${buff[2]} -e "drop database ${buff[3]}" mysql -uroot -p${buff[2]} -e "drop user '${buff[4]}'@'${buff[6]}'" mysql -uroot -p${buff[2]} -e "show databases;SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS ListUsername FROM mysql.user where User='${buff[4]}';" ;; esac } import_databases(){ dipasswd=eisc.cn # 定义 子库密码 echo "将从文件目录: $DestDir 导入数据库, 注意,不能出现重复的数据库文件。一个数据库保留一个sql 文件。列出该目录的文件,如下:" ; ls $DestDir read -p "是否将文件放置在该目录?y/n:" fzfile if [ "$fzfile" != "y" ] then echo "[ok] 退出! 将文件复制到该目录后,重新执行函数" exit fi echo "如果遇到问题,你可以使用 mysql管理工具来创建数据库和用户, 不使用该工具,会自动创建数据库。" for((s=0;s<${#DestDBName[*]};s++)) do di=`echo ${DestDBName[$s]} | awk -F"-" '{print $1}'` difile=${DestDBName[$s]} ShowDBName=`mysql -h $dataip -u $user -p$passwd -e "show databases" | grep $di ` if [ "$ShowDBName" = "$di"] then echo "[error] Database exists $di " else echo "[ok] runing import data $di" mysql -h $dataip -u $user -p$passwd -e "create database $di character set utf8;" mysql -h $dataip -u $user -p$passwd -e "grant all on $di.* to '$di'@'localhost' identified by '$dipasswd'" mysql -h $dataip -u $user -p$passwd -e "show databases;SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS ListUsername FROM mysql.user where User='$di';" fi mysql -h $dataip -u $user -p$passwd -e "use $di ; source $DestDir/$difile ; show tables;" echo "[ok] import databases $DestDir/$difile " done } set_file_mysqlpasswd(){ webdir=( "/datadisk/eisc/www/www/puyuetian/mysql/config.php" "/datadisk/eisc/www/xibin/puyuetian/mysql/config.php" ) for file in ${webdir[*]} do echo "set in $file" NR=`cat -n $file | grep PASSWORD | grep -v MYSQL | awk -F" " '{print $1}'` sed -i "$NR a \$_G['SQL']['PASSWORD'] = 'eisc.cn';" $file sed -i "$NR d" $file cat -n $file done } main(){ echo " 欢迎使用,小绿叶技术博客 eisc.cn 数据库搬家,数据库导出与导入工具,提供工具功能: 1. 数据库导出 2. 数据库导入 3. 数据库管理工具,创建与删除数据库和用户 请输入功能序号: Welcome to the small green leaf technology blog eisc.cn database move, database export and import tool, providing tool functions: 1. Database export 2. Database import 3. Database management tool, creating and deleting databases and users Please enter the function serial number: " read -p "input number: " tnumber case "$tnumber" in "1") echo "[runing] 1. Database export" ; export_databases ;; "2") echo "[runing] 2. Database import" ; import_databases ;; "3") echo "[runing] 3. Database management tool" ; mysql_database_tools ;; esac set_file_mysqlpasswd } main # 一键下载使用: wget eisc.cn/file/ubuntu/shell/server/mysql_export_import.sh ; chmod +x mysql_export_import.sh ; ./mysql_export_import.sh
 4   0  524天前
admin
1268
wget -O gitea https://dl.gitea.io/gitea/1.17.4/gitea-1.17.4-linux-amd64chmod +x gitea ; ./gitea web参考连接:https://docs.gitea.io/zh-cn/install-from-binary/  Jenkins:   https://www.jenkins.io/zh/doc/book/installing/物联网网关平台:http://www.ithingsboard.com/docs/reference/http-api/node-red:  https://nodered.org/
 4   0  565天前
admin
1272
#!/bin/bash cishu=30 lable=3 set_config_log(){ jieguofile=tongji-$i tongjifile="tongji.txt" charulog=("`n="0x1" ; cat $i | grep "nEventType" |grep -v JT | awk -v awknr="$n" '$NF==awknr' | awk -F"," '{print $4 "," $5}' |uniq -c | sort -n`") charu=(` n="0x1" ; cat $i | grep "nEventType" |grep -v JT | awk -v awknr="$n" '$NF==awknr' | awk -F"," '{print $4 "," $5}' |uniq -c | sort -n | awk -F" " '{print $1}' `) charu=`echo ${charu[*]} | sed "s/ /+/g"` ; charu=$[charu] charulv=`echo "" | awk -v charu="$charu" -v cishu="$cishu" '{printf "%0.2f",charu/cishu*100}'` ; charulv=${charulv:0:4} lablelist=$(n="0x1" ; cat $i | grep "nEventType" |grep -v JT | grep "labelNum = $lable" | awk -v awknr="$n" '$NF==awknr' | awk -F"," '{print $4 "," $5}' |uniq -c | sort -n) lablegs=$(echo $lablelist | awk -F" " '{print $1}') ; lablegs=`echo "" | awk -v lablegs="$lablegs" -v cishu="$cishu" '{printf "%0.2f",lablegs/cishu*100}'` ; lablegs=${lablegs:0:4} bachulog=("`n="0x2" ; cat $i | grep "nEventType" |grep -v JT | awk -v awknr="$n" '$NF==awknr' | awk -F"," '{print $4 "," $5}' |uniq -c | sort -n`") bachu=(` n="0x2" ; cat $i | grep "nEventType" |grep -v JT | awk -v awknr="$n" '$NF==awknr' | awk -F"," '{print $4 "," $5}' |uniq -c | sort -n | awk -F" " '{print $1}' `) bachu=`echo ${bachu[*]} | sed "s/ /+/g"` ; bachu=$[bachu] bachulv=`echo "" | awk -v bachu="$bachu" -v cishu="$cishu" '{printf "%0.2f",bachu/cishu*100}' ` ; bachulv=${bachulv:0:4} echo "#-------------- $i ---------------# " >> $tongjifile echo " 测试次数:$cishu 识别插入次数: $charu 识别插入正确率: $charulv % 识别拔出次数: $bachu 识别拔出识别率:$bachulv % 贴标签个数: $lable 正确识别标签率:$lablegs % " >> $jieguofile echo " 测试次数:$cishu 识别插入次数: $charu 识别插入正确率: $charulv % 识别拔出次数: $bachu 识别拔出识别率:$bachulv % 贴标签个数: $lable 正确识别标签率:$lablegs % " >> $tongjifile echo " " >> $tongjifile echo " #----------- 识别插入日志 -------------# ${charulog[*]} #----------- 识别拔出日志 ------------# ${bachulog[*]} #---------- 识别标签正确日志 ------------# $lablelist " >> $jieguofile } runset(){ file=(`ls | grep log | grep -v tongji`) for i in ${file[*]} do set_config_log done } runset
 8   0  575天前
快速发帖 高级模式
guest
登录之后更精彩~
我的小伙伴
Powered by HadSky 7.12.10
© 2015-2024 PuYueTian
小绿叶技术博客