常常会用到一些shell,整理汇总起来,方便自己以后操作,也可以给大家做参考。

当然,用这些shell前你最好是能把Linux的基础知识给学会了,起码要知道Linux怎么登录吧~~~囧

VPS一键测试脚本bench.sh

这个脚本有可能会消耗比较多的流量,如果有流量限制的机器还是慎用

  1. 显示当前测试的各种系统信息;
  2. 取自世界多处的知名数据中心的测试点,下载测试比较全面;
  3. 支持 IPv6 下载测速;
  4. IO 测试三次,并显示平均值。

再配合 unixbench.sh 脚本测试,即可全面测试 VPS 的性能,更多工具可见:Linux系统网络测速工具

使用方法:

命令1:wget -qO- bench.sh | bash或者curl -Lso- bench.sh | bash
命令2:wget -qO- 86.re/bench.sh | bash或者curl -so- 86.re/bench.sh | bash

bench.sh 既是脚本名,同时又是域名,所以不要怀疑写错了或者你看错了。

一键安装Shadowsocks

四合一版

几乎是玩vps必备,不装Shadowsocks多浪费国外vps

该shell来自秋水逸冰,四合一版本
系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
内存要求:≥128M

1
2
3
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

Shadowsocks-go一键安装脚本

1
2
3
wget --no-check-certificate -O shadowsocks-go.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.sh
chmod +x shadowsocks-go.sh
./shadowsocks-go.sh 2>&1 | tee shadowsocks-go.log

Shadowsocks-go静默安装

1
2
3
wget --no-check-certificate -O shadowsocks-go.sh https://raw.githubusercontent.com/cdnf/shell/master/shadowsocks-go.sh
chmod +x shadowsocks-go.sh
./shadowsocks-go.sh 2>&1 | tee shadowsocks-go.log

卸载方法

若已安装多个版本,则卸载时也需多次运行(每次卸载一种),使用root用户登录,运行以下命令:

1
./shadowsocks-all.sh uninstall

启动脚本

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:/etc/init.d/shadowsocks-python start | stop | restart | status
ShadowsocksR 版:/etc/init.d/shadowsocks-r start | stop | restart | status
Shadowsocks-Go 版:/etc/init.d/shadowsocks-go start | stop | restart | status
Shadowsocks-libev 版:/etc/init.d/shadowsocks-libev start | stop | restart | status

一键重启SS服务端

1
/etc/init.d/shadowsocks-go restart || /etc/init.d/shadowsocks restart

各版本默认配置文件

Shadowsocks-Python 版:/etc/shadowsocks-python/config.json
ShadowsocksR 版:/etc/shadowsocks-r/config.json
Shadowsocks-Go 版:/etc/shadowsocks-go/config.json
Shadowsocks-libev 版:/etc/shadowsocks-libev/config.json

一键安装宝塔面板

一般用不到,但偶尔还是有人要,记录之。

1
yum install -y wget && wget -O install.sh  http://download.bt.cn/install/install.sh  && sh install.sh

网站Git自动部署

以下脚本实施方案场景是hexo程序部署在vps上,然后Git提交文章源文件,触发Git自动渲染并发布到其他Git仓库。实际应用可见:Hexo博客Git-VPS部署完整记录
同时,为SEO需要,将新文章自动提交到百度站长平台及熊掌号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
unset GIT_DIR
GIT_REPO=/home/git/sobaigu.git
TMP_GIT_CLONE=/tmp/hexo
HEXO_HOME=/home/git/sobaigu
PUBLIC_WWW=/home/wwwroot/sobaigu.com
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
cp -rf ${TMP_GIT_CLONE}/hexo/* ${HEXO_HOME}
cd ${HEXO_HOME}
hexo clean
hexo g #有些vps上连着写貌似会出现改时区设置什么的,导致&&无法执行下去
hexo d
rm -rf ${PUBLIC_WWW}/*
cp -rf ${HEXO_HOME}/public/* ${PUBLIC_WWW}
### 将最新文章自动推送熊掌号和百度站在平台 ###
cd ${TMP_GIT_CLONE}
git diff --name-status HEAD^ >gitdiff.log
sed -e 's/^.*_posts\/......../http:\/\/sobaigu.com\//' -e 's/md$/html/' gitdiff.log >urls.txt
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?appid=xxx&token=yyy&type=realtime"
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=sobaigu.com&token=zzz"

注意: 一定要 unset GIT_DIR 清除变量, 不然会引起 remote: fatal: Not a git repository: ‘.’ 错误。

上面的 sed 写法请根据自己的实际情况增删改。

1
grep -r -l 'index.html' * >urllist.txt

之前用的 grep 命令,没看到后面的 * ,翻遍帮助说明,一直蒙圈,这个就是过滤出所有包含查找字符串的文件名。

生成随机密码

每次我们想要获得一个密码的时候都很头疼,可用下面的shell逻辑实现一个获取任意位数随机密码的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# 如果得到参数 则将得到的参数作为密码的位数,否则指定密码位数为8
if [ -n "$1" ]; then length=$1;
else length=8; fi
# 设定可以作为密码的字符串
chars='abcdefghijkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789'
# 获取上面的字符串的长度,其实可以直接数一下,这不是练一下 shell 嘛
charsLength=`echo $chars | wc -m | sed 's/^[ \t]*//g'`
# 初始的为空
pw=''
# 根据所需密码长度进行循环
for ((i=0;i<$length;i++));do
# 取得一个随机数
# $RANDOM 是获取一个小于 32767 的随机数
# 所以除以 32767 就可以得到一个 0 - 1 之间的随机小数
r=`echo $RANDOM/32767 | bc -l`
# 根据随机数*字符长度取得一个数字
num=`echo $r*$charsLength | bc`
# 将取得数字向上取整,并在字符串中截取对应位置的字符
w=`echo $chars | cut -c$((${num//.*/+1}))`
# 字符追加到 pw 这个变量
pw=$pw$w
done
# 输出我们想要的密码
echo $pw

一键安装最新内核并开启BBR

BBR指Google开源的TCP BBR 拥塞控制算法,从 kernel 4.9 开始,Linux 内核已经用上了该算法。
根据实际测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M

关于本脚本

脚本出自秋水逸冰大神

  1. 本脚本已在大部分 VPS 全部测试通过。
  2. 当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
  3. 脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
  4. 由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

1
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

1
2
uname -r  #查看内核版本大于4.9就OK了
lsmod | grep bbr #出现了`tcp_bbr`就OK

更多细节请参考秋水逸冰的博客

编译安装lnmp

几乎是网站服务器必备,省心省力,最新版是lnmp1.4

1
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp

一键安装常用软件

主要方便自己使用,安装什么软件自行扩展。

1
yum update -y && yum install wget vim lrzsz screen -y