分类 BASH 下的文章

Bash CURL: 获取状态码以及信息处理


目标

后期为项目做准备,想处理一些信息的转换。在brootkit中重新处理远程地址,因为有些后门要固定信息,直接写ip或者域名不怎么好,想到利用github.io的形式来处理C&C服务器的信息,比如C&C的ip或者域名随时更改直接放到github的配置文件中,所有信息只需要读取一个公共的github项目就可以再次解析出远程服务器的相关信息。

curl 参数

-A/--user-agent <string>              设置用户代理发送给服务器
-b/--cookie <name=string/file>    cookie字符串或文件读取位置
-c/--cookie-jar <file>                    操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>            断点续转
-D/--dump-header <file>              把header信息写入到该文件中
-e/--referer                                  来源网址
-f/--fail                                          连接失败时不显示http错误
-o/--output                                  把输出写到该文件中
-O/--remote-name                      把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                                    静音模式。不输出任何东西
-T/--upload-file <file>                  上传文件
-u/--user <user[:password]>      设置服务器的用户和密码
-w/--write-out [format]                什么输出完成后
-x/--proxy <host[:port]>              在给定的端口上使用HTTP代理
-#/--progress-bar                        进度条显示当前的传送状态

-w 具体的参数可到 别人的博客园 里获得。

curl 获取状态码

curl -I -m 10 -o /dev/null -s -w %{http_code} https://elf-all.github.io/config/callback_port.conf

· -I 仅测试HTTP头
· -m 10 最多查询10s
· -o /dev/null 屏蔽原有输出信息
· -s silent 模式,不输出任何东西
· -w %{http_code} 控制额外输出

这样直接返回其文件的状态码,如果是404则是访问失败,可能项目配置文件的地址已更换,如果是200的话就可进行下一步了

curl 获取结果

curl https://elf-all.github.io/config/callback_port.conf

直接获取文件内容,就等待其他的处理。


Superbench.sh:一键脚本测试 VPS 性能


使用这个脚本,可以一键测试搬瓦工 VPS 各种性能,包括 VPS 基本信息,硬盘读写速度,到国内各个地区的下载速度等。与 bench.sh 相比,这个脚本主要是在测速方面做了改动。

一、Superbench.sh 使用方法

使用方法:

wget -qO- http://tool.bug-maker.com/superbench/superbench_git.sh | bash

或者线上的版本

wget -qO- sb.oldking.net | bash

测试结果如下所示:

微信截图_20200918111246.png


宝塔Webhook脚本实现多git项目自动部署


之前写大部分只能针对一个项目来部署,这回改成多个项目自动部署。

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
          echo "param参数错误"
          echo "End"
          exit
fi
#解析参数 例abc/efg
param="$1"
obj_user=${param%\/*}
obj_name=${param#*\/}
#git项目路径
gitPath="/www/wwwroot/we7.71yunduan.top/addons/$obj_name/"
if [ ! -d "$gitPath" ]; then
        mkdir $gitPath
fi
#git 网址
gitHttp="git@gitlib.71yunduan.top:$obj_user/$obj_name.git"
 
echo "Web站点路径:$gitPath"
echo "Git项目地址:$gitHttp"
 
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

Linux命令行下获取本机外网ip的几种方法


Curl 纯文本格式输出:

curl icanhazip.com
curl ifconfig.me
curl curlmyip.com
curl ip.appspot.com
curl ipinfo.io/ip  这个不错
curl ipecho.net/plain
curl www.trackip.net/i

curl JSON格式输出:

curl ipinfo.io/json
curl ifconfig.me/all.json
curl www.trackip.net/ip?json (有点丑陋)

curl XML格式输出:

curl ifconfig.me/all.xml

curl 得到所有IP细节 (挖掘机)

curl ifconfig.me/all

使用 DYDNS (当你使用 DYDNS 服务时有用)

curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0-9\.]*\).*/\1/g'
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"

使用 Wget 代替 Curl

wget http://ipecho.net/plain -O - -q ; echo
wget http://observebox.com/ip -O - -q ; echo

使用 host 和 dig 命令

如果有的话,你也可以直接使用 host 和 dig 命令。

host -t a dartsclink.com | sed 's/.*has address //'
dig +short myip.opendns.com @resolver1.opendns.com

bash 脚本示例:

#!/bin/bash
PUBLIC_IP=`wget http://ipecho.net/plain -O - -q ; echo`
echo $PUBLIC_IP