Linux 常用服务




Linux 常用配置


1. 网卡配置
    # vim /etc/sysconfig/network-scripts/ifcfg-ens33
        TYPE="Ethernet"     \\ 接口类型 常见的有Ethernet以太网 Bridge桥接
        PROXY_METHOD="none"
        BROWSER_ONLY="no"
        BOOTPROTO="static"    \\ 激活此设备时使用的地址配置协议,常用dhcp,static,none,bootp;
        IPADDR=192.168.10.10   \\ ip地址
        NETMASK=255.255.255.0   \\ 子网掩码
        GATEWAY=192.168.10.254   \\ 网关
        DNS1=8.8.8.8              \\ DNS
        DEFROUTE="yes"
        IPV4_FAILURE_FATAL="no"
        IPV6INIT="yes"
        IPV6_AUTOCONF="yes"
        IPV6_DEFROUTE="yes"
        IPV6_FAILURE_FATAL="no"
        IPV6_ADDR_GEN_MODE="stable-privacy"
        NAME="ens33"
        UUID="e9f80c94-a517-42a1-a465-1611e83849ec" \\ 设备的唯一标识
        DEVICE="ens33"                               \\ 此配置文件应用到的设备
        ONBOOT="yes"                                  \\ 在系统引导时是否激活此设备
    # systemctl restart network
    
    网卡配置多个ip地址
        # cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:0}
        # vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
            NAME="ens33:0"          \\ 这些为必改项目
            DEVICE="ens33:0"         \\ 需删除UUID


2. ssh修改端口号
   # vim /etc/ssh/sshd_config
       Port 22
       Port 65522
   # systemctl restart sshd
   # ss -tnl


3. 关闭selinux
   # vim /etc/sysconfig/selinux
       SELINUX=disabled            \\ 永久关闭 需要重启
   # getenforce                     \\ 查询状态
   # setenforce 0                    \\ 临时关闭


4. parted 分区操作
    # parted -l       \\ 查看所有分区
    # parted           \\ 进入
        print devices   \\ 显示所有硬盘设备
        select /dev/sdb  \\ 选择某一硬盘
        p                 \\ 查看分区状态
        mkpart             \\ 创建分区
            start 
            end -1           \\ 到最后
        rm 4                  \\ 删除分区4


5. mkfs 格式化 建立文件系统
    ls -l /sbin/mkfs.*          \\ 可以查看到所有支持的格式 实际就是调用这些文件
    mkfs -V                      \\ 显示版本信息
    mkfs.ext4 /dev/sdb4           \\ 把该设备格式化成ext4文件系统
        .vfat                      \\ vfat就是fat32
        .msdos                      \\ msdos就是fat16


6. 如何使用光盘/U盘当做本地yum仓库
    # mount /dev/cdrom /media/cdrom      \\ 挂载光盘至某目录 如/media/cdrom
    # vim /etc/yum.repos.d/lo.repo        \\ 创建配置文件
        [baselo]
        name=CentOS 7 Release 7.1.1503
        baseurl=file:///cdrom                \\ cdrom 下面有 repodata目录 所以指向
        gpgcheck=0
        enabled=1


7. 修改时间与时区
    # ntpdate 0.asia.pool.ntp.org     \\ 网络同步时间 如不好使 可手动修改
    # date -R                          \\ 查看时间 与时区
    # date -s "2020-1-20 10:01:50"      \\ 修改时间 为
    # hwclock                            \\ 查看硬件时间
    # hwclock -w                          \\ 将软件时间写入到硬件时间 避免重启失效
    # tzselect                             \\ 修改时区 选择对应数字 Asia 亚洲 


8. Linux 硬盘 安装
    ❶. 使用UltraISO制作USB启动盘
        a 文件-->打开-->选择要安装的镜像
        b 启动-->写入硬盘映象
        c 选择U盘-->写入方式一般为USB-HDD+ 点击写入
    ❷. 在 Install CentOS 7 上按e 
        把hd:与quiet之间的字符都删除,变成下面这样,其实就添加了/dev/sdb4,sdb4就是U盘的分区号 之后 按 Ctrl+ x重启
            vmlinuz initrd=ini trd.img inst.stage2=hd:/dev/sdb4 queit
        如果启动不了 可以等到有命令行出现
            # ls
            # cd dev
            # ls             \\ 可以查看到U盘的盘符是哪一个 回去再添加上就可以了


9. Https证书申请流程
    使用 godaddy 申请证书
        # (umask 077; openssl genrsa -out www.syk.my.key 2048)
        # openssl req -new -key www.syk.my.key -out www.syk.my.csr -days 730     \\ 拿到csr复制到godaddy官网
            CN Beijing Beijing ssyy99 OMD www.syk.my ssyy99@google.com

    使用免费证书申请流程
        https://freessl.cn
            证书类型 RSA
            验证类型 文件验证
            CSR生成  浏览器生成

    添加到nginx文件验证                          \\ 对于DNS验证 添加 @ tet 记录即可
            location / {                         \\ 对于强制跳转的加如下代码  在80端口下添加注释掉原来的rewrite
                rewrite ^/(.*) https://$server_name$1 permanent;
            }
            location /.well-known/pki-validation {       \\ 对于不是强制跳转 加以下代码即可
                charset utf-8;
                alias /data/;                              \\ godaddy.html 或要验证的文件 复制到此目录下
                sendfile on;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
            }
        # /usr/local/sbin/nginx -t
        # /usr/local/sbin/nginx -s reload          \\     证书:*.crt   私钥: *.key

    godaddy 验证步骤 https://sg.godaddy.com/zh/help/html-dns-7452


10. IIS 部署证书流程
      Linux
        # yum install openssl
        # rz cs.tskefu.com.key cs.tskefu.com.crt                      \\ 需生成 .pfx文件 密码123456即可
        # openssl pkcs12 -export -out cs.tskefu.com.pfx -inkey cs.tskefu.com.key -in cs.tskefu.com.crt

      Windows
        ① 把pfx文件复制到证书目录下 D:\zrpfx
        ② 打开IIS应用池 SERVER-02 --> 服务器证书 --> 导入
        ③ 打开www.online.com主页 --> 右键编辑绑定 --> 编辑/添加 --> 选择要使用的证书
        
    注:
        ❶ 此key文件为linux格式 否则会报错 可以使用把key复制到vim编辑另存即可


11. 关于mysql数据库密码
    ❶. 修改数据库root密码
        mysql> use mysql                                                       \\ 选择数据库
        mysql> update user set password=password("123456") where user="root";   \\ 修改root密码
        mysql> flush privileges;                                                 \\ 设置密码后需刷新授权

    ❷. 忘记数据库root密码
        # vim /etc/mysql/my.cnf             \\ 编辑主配置文件 
            skip-grant-tables                \\ 免密码登录 下次登录不需要密码
        # systemctl restart mysqld            \\ 重启数据库 之后可以修改root密码


12. Youtube 视频下载
    # wget https://yt-dl.org/downloads/latest/youtube-dl -O/usr/local/bin/youtube-dl       \\ 下载软件
    # chmod a+rx /usr/local/bin/youtube-dl              \\ 给执行权限
    # youtube-dl -F https://www.youtube.com/             \\ -F 查看视频的清晰度  要下载的Youtube的视频链接 
    # youtube-dl -f 18 https://www.youtube.com/           \\ -f 编号为18清晰度的视频  不加选项为下载源码


13. 使用find命令查找文件的时候报错
    # find / -name aaa                   \\ 报错 find: ‘/run/user/1000/gvfs’: Permission denied   
    # umount /run/user/1000/gvfs          \\ 解决
    # rm -rf /run/user/1000/gvfs


14. 解决VMware Workstation 两台 windowns 之间网络不通的问题
    控制面板 --> 系统与安全 --> windows defender 防火墙 --> 高级设置 --> 公用配置文件 
    --> windows defender 防火墙属性 --> 公用配置文件 --> 入站连接 --> 允许


15. 宝塔

    宝塔安装
        # wget http://download.bt.cn/install/install_6.0.sh
        # chmod +x install_6.0.sh
        # ./install_6.0.sh
        # bt                                \\ 宝塔面板 命令行 文件在 /etc/init.d/bt
        # bt restart
        # bt stop
        # bt reload

    卸载
        # /etc/init.d/bt stop 
        # chkconfig --del bt
        # rm -f /etc/init.d/bt
        # rm -rf /www/server/panel 

    宝塔配置文件
        # vim www/server/panel/data/admin_path.pl     \\ 设置安全 端口
            /4084ae67
        # rm www/server/panel/data/admin_path.pl        \\ 关闭安全入口 删除此文件即可
        # vim /www/server/panel/data/port.pl             \\ 修改宝塔端口
            8888
        # cat /tmp/panelBoot.pl                            \\ 日志
        # vim /www/server/panel/tools.py                    \\ 面板配置文件

        链接后面加上/soft  /files这样即可轻松越过强制绑定

    备份数据
        注意 PHP mysql nginx apache 版本
        sz /www/wwwroot                  \\ 网址目录
        sz /www/server/panel/vhost        \\ 网址配置文件
        sz /www/server/panel/data          \\ 主要备份default.db  宝塔面板数据文件
        # ./mysql_bak.sh                    \\ 备份mysql数据库 注意mysql版本 5.5   5.7不互通   

        推送 到服务器安装rsync
            # vim /etc/rsyncd.conf
                uid  = www
                gid  = www
                port = 63873
                use chroot  = no
                max connections = 10
                hosts allow = 192.168.10.10
                lock file = /var/run/rsync.lock
                log file  = /var/log/rsyncd.log
                ignore errors
                [cp_web]
                path = /data/www
                read only = no

            # groupadd www
            # useradd -g www www
            # chown -R www.www /data/wwwroot
            # rsync --daemon
            # ss -tnl 
            # pkill rsync 
            # iptables -A INPUT 4 -p tcp --dport 63873 -j ACCEPT 

            # rsync -avzP --port=63873 /www/wwwroot/ www@192.168.10.11::cp_web         \\ 推送到目标
        
    还原数据
        rz /www/wwwroot                        \\ 网址目录
        rz /www/server/panel/vhost              \\ 网址配置文件
        rz /www/server/panel/data/default.db     \\ 使用Navicat修改宝塔数据库 此文件存放宝塔面板的信息
        # ./mysql_re.sh                           \\ 还原mysql数据 注意测试

    修改面板数据
        使用navicat 导出sites domain databases表格
        sites  表格k列设置id 
        domain 表格G列设置id I列=VLOOKUP(B2,sites.xlsx!$A$2:$K$153,11,1) 替换id 和pid列 删除G I 列保存
        databases 表格J列设置id L列=VLOOKUP(B2,sites.xlsx!$A$2:$K$153,11,1 ) 替换id和pid列 删除J L列保存
        sites  替换id列 删除k列保存

    宝塔数据面板 sqlite数据库  /www/server/panel/data/default.db
        sites      网站 
            domain    网站-->域名管理的端口  pid要与sites表的 id 对应
        firewall   安全           
        databases  数据库
        users      登陆密码
        crontab    计划任务
     
    宝塔 问题
        1. 一些网站会提示 php短标签(short_open_tag)功能才能运行!
            # vim /www/server/php/56/etc/php.ini
                short_open_tag = Off





shell_常用脚本.sh


##### 基础脚本 ######################### 
##### 01. 同时读取两个脚本 ##############
#!/bin/bash
#同时读取两个文件进行循环
exec 3<"1.txt"
exec 4<"2.txt"

while read line1<&3 && read line2<&4
do
        echo $line1 $line2
EOF
done


##### 02. 读取两个文件循环 批量修改文件 ##################
#!/bin/bash
# 读取两个文件循环 批量修改文件
# 可实现读取前5行输出到第一个文件中 再次5行输出到第二个文件中 
# 由于网站不识别utf-8编码 可先使用iconv转码 转成gbk

web_dir=/home/www/wwwroot/
iconv -f utf-8 -t gbk url.txt > url_gbk.txt

while read line1
do
    echo >> $web_dir$line1/data/flink.conf
    y=1

    while read line2
    do
        if [ $y -le 5 ];then
            let y++
        else
            sed -i '1,5d' url_gbk.txt
            break 1
        fi
            echo "$line2" >> $web_dir$line1/data/flink.conf
    done < url_gbk.txt

done < web.txt

echo > url.txt
rm -f url_gbk.txt


###### 03. 检测某一端口是否存活 ############
# 每1分钟检测一次800端口是否存活 自动重新启动vpn手机端服务
# 添加开启启动 echo "nohup /data/shell/shadowsocksr_status.sh &" >> /etc/rc.local
# 手动启动 nohup /data/shell/shadowsocksr_status.sh &
# 2020_12_14_T
while :
do
lsof -i:800 &>/dev/null
if [ $? -eq 0 ]; then
	echo -e "\e[1;35mshadowsocksr is open\e[0m"
else
	echo -e "\e[1;31mshadowsocksr is close\e[0m"
	{
	python /usr/local/shadowsocksr-3.2.1/server.py &
	} &
	echo -e "\e[1;33mshadowsocksr is rsetart\e[0m"
	
fi
sleep 60s
done


##### 04. ping01 脚本 ##########################
# 此脚本会 ping /data/shell/a.txt 里面的所有网址 会循环ping 多线程
# nohup /data/shell/ping.sh >/data/shell/nohup.out 2>&1 &    \\ 后台执行 ping.sh的打印信息会输出到指定目录下的nohup.out中
# 添加开机启动 /etc/profile.d/pings.sh  --> #!/bin/bash   nohup /data/shell/ping.sh >/data/shell/nohup.out 2>&1 &
# killall ping.sh 停止脚本 killall 的包是psmisc 可以 yum install psmisc安装
for ((n = 1;n >0;n++))
do
while read IP
do 
    { 
    ping $IP -c2 -s1 2>&1 1>>/dev/null && echo -e $IP is "\033[32;49;1malive\033[39;49;0m" || echo -e $IP is "\033[31;49;1mdown\033[39;49;0m" 
    } & 
done < /data/shell/a.txt
wait 
done


##### 05. ping02 脚本 ##############################
##### 检测局域网内所有的ip是否在线 多线程 ######
for i in $(seq 1 254)
do
    {
    IP="192.168.10.$i"
    ping $IP -c2 -s1 2>&1 1>>/dev/null && echo -e $IP is "\033[32;49;1malive\033[39;49;0m" || echo -e $IP is "\033[31;49;1mdown\033[39;49;0m" 
    } &
done

wait

echo "所有ip检测完毕"


##### 06. 检测nginx是否存活 重启nginx ###########
# 检测nginx 是否存活
# 运行脚本使用此命令后台 nohup /data/shell/nginx_status.sh &
# 添加开机启动 echo "nohup /data/shell/nginx_status.sh &" >> /etc/rc.local
# 2020_11_03_teo
while :
do
ss -tnl | grep ":80" &>/dev/null
if [ $? -eq 0 ]; then
	echo -e "\e[1;35mnginx is open\e[0m"
else
	echo -e "\e[1;31mnginx is close\e[0m"
	systemctl restart nginx
	echo -e "\e[1;33mnginx is rsetart\e[0m"
	
fi
sleep 10s
done


##### 07. 批量添加防火墙规则 #######################
# 批量添加删除防火墙规则 端口存放在 同目录下的ipt.txt内 
while read line
do
iptables -D IN_public_allow -p tcp --dport $line -m conntrack --ctstate  NEW,UNTRACKED -j ACCEPT
iptables -D IN_public_allow -p udp --dport $line -m conntrack --ctstate  NEW,UNTRACKED -j ACCEPT
done < ipt.txt


##### 08. 脚本跳板机 ###########################
# 脚本跳机

trap "" HUP INT OUIT TSTP
web1=192.168.10.10
web2=192.168.10.11
clear

while :
do
cat <<-EOF
+-----------------------------------+
|       This is a jumpserver        |
|       1. web1		     |
|       2. web2                     |
|       3. mysql1                   |
|       4. mysql2                   |
+-----------------------------------+
EOF

echo -en "\e[1;32minput number: \e[0m"
read num
case "$num" in
1)
	ssh jump@$web1
	;; 
2)
	ssh jump@$web2
	;;
3)
	ssh alice@$mysql1
	;;
4)
	ssh alice@$mysql2
	;;
"")
	;;
*)
	echo "error"
esac

done


##### 09. 禁止海外ip访问 添加白名单####################
#防火墙 添加ip白名单 可以限制国外的ip访问
#国外ip汇总在 ip段所有国家.zip 地址 https://www.syk.my/download/ip段所有国家.zip
#先合并ip cat *.zone > white_ip.zone
iptables -F
iptables -X
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

while read ip
do
	
	iptables -A INPUT -s $ip -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
	echo $i
	let i++

done < white_ip.zone
wait

#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
echo "iptables 已添加所有要允许的ip"


##### 10. 批量下载脚本 #################################
#!/bin/bash
#批量下载脚本
# url格式为   即可 保存到 a.txt
# https://basicenglishspeaking.com/wp-content/uploads/2016/audio/ce/E-26.mp3
# https://basicenglishspeaking.com/wp-content/uploads/2016/audio/ce/E-27.mp3
mydir=`pwd`
while read line
do
{
    if [ -n "$line" ]
    then
        cd $mydir
        url=$(echo "$line" | tr -d '\r')
        picdir=$(echo $url | sed -r 's/http:\/\///g')
        picname=$(echo ${picdir##*/})
        picpath=$(echo ${picdir%/*})
        mkdir -p $picpath
        cd $picpath
        wget -O $picname `echo $url`
    fi
}
done < a.txt
exit 0


##### 11. 统计 单词出现的次数 #################################
#!/bin/sh
while read line 
do
    temp=`cat z.txt | grep -E "^$line "`
    if [ $? -eq 0 ];then
            i=`echo $temp | cut -d ' ' -f 2`
            let i++
            sed -i "/^$line/c$line $i" z.txt
    else
            echo $line 1 >> z.txt
    fi
done < a.txt