scapy安装说明
scapy是一款不错的网络测试工具,python3下安装步骤:
apt-get update
apt-get install python3-pip
pip3 install scapy-python3
scapy是一款不错的网络测试工具,python3下安装步骤:
apt-get update
apt-get install python3-pip
pip3 install scapy-python3
twemproxy是一个twitter开源的一个redis和memcache代理服务器。也叫nutcracker
源码:https://github.com/twitter/twemproxy
1.安装过程:
apt-get update
apt-get install autoconf automake libtool
wget https://github.com/twitter/twemproxy/archive/v0.4.1.zip
unzip v0.4.1.zip
cd twemproxy-0.4.1/
chmod 777 ./travis.sh
./travis.sh
查看帮助:
$ nutcracker --help
This is nutcracker-0.4.1
Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
[-c conf file] [-s stats port] [-a stats addr]
[-i stats interval] [-p pid file] [-m mbuf size]
Options:
-h, --help : this help
-V, --version : show version and exit
-t, --test-conf : test configuration for syntax errors and exit
-d, --daemonize : run as a daemon
-D, --describe-stats : print stats description and exit
-v, --verbose=N : set logging level (default: 5, min: 0, max: 11)
-o, --output=S : set logging file (default: stderr)
-c, --conf-file=S : set configuration file (default: conf/nutcracker.yml)
-s, --stats-port=N : set stats monitoring port (default: 22222)
-a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0)
-i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec)
-p, --pid-file=S : set pid file (default: off)
-m, --mbuf-size=N : set size of mbuf chunk in bytes (default: 16384 bytes)
2.配置文件:
vim conf/nutcracker.yml
alpha:
listen: 0.0.0.0:27017
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
redis_auth: 5cKBak4iBLY1
servers:
- 10.10.11.31:6379:1
redis_auth为后端redis的认证密钥
listen: 0.0.0.0:27017 监听本地所有的27017端口
3.在当前目录下启动:
nutcracker -d -c conf/nutcracker.yml
4.客户端连接测试:
redis-cli -p 27017 -a 5cKBak4iBLY1
127.0.0.1:27017> set a abl
OK
127.0.0.1:27017> get a
"abl"
注意:
对于redis的系统命令是不支持的,也就导致了有些客户端工具连接不上。
MAC OS X 可通过brew一键安装:
$ brew install httpie
大多数的Linux发行版都提供了一个包,可以通过系统包管理器来安装:
基于Debian的发行版比如Ubuntu可以通过下面的方法安装:
apt-get install httpie
基于RPM包的安装方式:
yum install httpie
Windows、MAC、Linux的通用安装方式是通过pip来安装:
pip install --upgrade pip setuptools
pip install --upgrade httpie
最新的开发版可从GitHub获取到:
Mac OS X 系统通过brew安装
brew install httpie --HEAD
通用安装
pip install --upgrade https://github.com/jkbrzt/httpie/tarball/master
比如查看elasticsearch版本信息:
http http://1.1.1.1:9200/ -a username:password --body
更多使用说明查考官方文档:https://httpie.org/docs
下载:https://getcomposer.org/Composer-Setup.exe
直接执行安装,它会查找系统环境变量php所在位置,然后自动安装。
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
官方仓库:https://hub.docker.com/_/composer
docker pull composer
docker run --rm --interactive --tty --volume $PWD:/app composer create-project flarum/flarum .
# 加上代理(若SSL失败可以重试几次)
docker run --rm --interactive --tty -e HTTP_PROXY=http://192.168.50.1:50001 -e HTTPS_PROXY=http://192.168.50.1:50001 --volume $PWD:/app composer create-project flarum/flarum .
安装中文包
composer require flarum-lang/chinese-simplified
单点登录
composer require maicol07/flarum-ext-sso
上传文件
composer require fof/upload
图链接自动显示
composer require fof/formatting
header上的导航栏
composer require fof/links
https://mithril.js.org/
https://docs.flarum.org/zh/extend/frontend
# cd into your flarum folder
mkdir packages & cd packages
npx @friendsofflarum/create-flarum-extension web3address
cd packages/web3address
cd js
yarn && yarn dev
https://juejin.cn/post/7111517181460480014 https://www.sitepoint.com/writing-a-flarum-extension-building-a-custom-field/
1.在项目目录下新建composer.json文件:
{
"require": {
"elasticsearch/elasticsearch": "~1.0"
}
}
2.命令行进入该目录执行:
composer update
composer list 显示所有命令
composer show 显示所有包信息
composer install 在 composer.json 配置中添加依赖库之后运行此命令安装
composer install --ignore-platform-req=ext-redis --ignore-platform-req=ext-mongodb # 安装时排除指定扩展,缺扩展时防止安装报错
composer create-project laravel/laravel Laravel –prefer-dist "5.1.*" 创建项目
composer search packagename 搜索包
composer update 更新所有包
composer update elasticsearch/elasticsearch 更新指定包(通过修改composer.json文件中的版本号,再用该条命令可升级对应包的版本)
composer remove elasticsearch/elasticsearch 移除指定的包
composer require elasticsearch/elasticsearch 添加指定包
composer require elasticsearch/elasticsearch:1.19 添加指定包和版本
composer require elasticsearch/elasticsearch=1.19
composer require elasticsearch/elasticsearch 1.19
about 显示关于composer的简短信息。
archive 创建这个作曲家软件包的存档。
browse 在浏览器中打开软件包的存储库 URL 或主页。
cc 清除composer的内部软件包缓存。
check-platform-reqs 检查是否满足平台要求。
clear-cache 清除作曲家的内部软件包缓存。
clearcache 清除作曲家的内部软件包缓存。
config 设置配置选项。
create-project 从包中创建新的项目到给定的目录中。
depends 显示哪些包会导致给定包被安装。
diagnose 诊断系统以识别常见错误。
dump-autoload 转储自动加载器。
dumpautoload 转储自动加载器。
exec 执行销售的二进制文件/脚本。
fund 了解如何为维护你的依赖关系提供资金。
global 允许在全局作曲家目录($COMPOSER_HOME)中运行命令。
help 显示命令的帮助。
home 在浏览器中打开软件包的仓库 URL 或主页。
i 从 composer.lock 文件中安装项目依赖关系(如果存在),或者使用 composer.json。
info 显示软件包的信息。
init 在当前目录下创建一个基本的 composer.json 文件。
install 如果存在的话,从 composer.lock 文件中安装项目依赖关系,或者回到 composer.json。
licenses 显示依赖项的许可证信息。
list 列出命令
outdated 显示有更新的已安装软件包的列表,包括其最新版本。
prohibits 显示哪些软件包无法安装。
remove 从 require 或 require-dev 中移除一个包。
require 将所需的包添加到 composer.json 中并安装它们。
run 运行 composer.json 中定义的脚本。
run-script 运行 composer.json 中定义的脚本。
search 搜索软件包。
self-update 将 composer.phar 更新为最新版本。
selfupdate 将 composer.phar 更新到最新版本。
show 显示软件包的信息。
status 显示本地修改的软件包列表。
suggests 显示软件包的建议。
u 根据 composer.json 将你的依赖项升级到最新版本,并更新 composer.lock 文件。
update 根据 composer.json 将你的依赖项升级到最新版本,并更新 composer.lock 文件。
upgrade 根据 composer.json 将你的依赖项升级到最新版本,并更新 composer.lock 文件。
validate 验证 composer.json 和 composer.lock。
why 显示哪些包导致给定包被安装。
why-not 显示哪些包会阻止给定包的安装。
1.修改 composer 的全局配置文件(推荐方式)
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
阿里云镜像源 https://mirrors.aliyun.com/composer/
华为云 https://mirrors.huaweicloud.com/repository/php/
腾讯云 https://mirrors.cloud.tencent.com/composer/
上海交通大学 https://packagist.mirrors.sjtug.sjtu.edu.cn/
恢复到官方源:
composer config -g repo.packagist composer https://packagist.org
2.修改当前项目的 composer.json 配置文件:
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
composer selfupdate
查看composer版本:
composer --version
回滚版本:
composer self-update --rollback
中文文档:http://www.phpcomposer.com/
在composer.json
文件中添加config
{
"require": {
"mongodb/mongodb": "^1.8"
},
"config": {
"platform": {
"php": "7.1.0"
}
}
}
发布包注意事项
1.src目录下的文件名和类名保持一致。
2.提交到git后,要创建一个release Tags标签,比如 v1.7,再去Packagist手动update。
3.在Packagist提交发布地址的时候,填入的是GitHub的地址,注意不是.git结尾的这种(否则会报CSRF错误)。
4.发布完包后Packagist的国内索引需要一定时间才能更新,所以不能马上通过composer require更新包。(可以通过切换到官方源,并清除本地缓存 composer clearcache 来处理)
5.如果跨越大版本号更新,require是无法满足的。(可以先remove再require)
6.命名空间和包名是区分大小写的。
7.注意composer.json文件里autoload psr-4 命名空间前缀必须以\\
结尾,而且这里的命名空间要与类中namespace对应。否则class_exists()也找不到类的。
8.composer.json里的项目名称必须全部小写。
依赖模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://malu.me/$1 [P]
</IfModule>
<FilesMatch ".json" >
Header set Access-Control-Allow-Origin: "*"
</FilesMatch>
<Files config.json>
order allow,deny
deny from all
</Files>
<FilesMatch "\.(sql|py|db|sh)$">
order allow,deny
deny from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.html [L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
查看apache2的错误日志出现:.htaccess: order not allowed here
解决办法:
在apache的配置文件中修改AllowOverride的属性为all:
AllowOverride All
表示允许用户自定义.htaccess文件。
系统环境:Ubuntu 14.04、apache2
apache 2.4.9以后php-fpm协同apache一起工作所需要的配置没有以前那么复杂了,所以有必要升级一下。
查看apache版本
apachectl -v
1.添加并更新源
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/apache2
apt-get update
注意,命令前加了 LC_ALL=en_US.UTF-8,为了防止添加期间编码报错问题!
如果还是出现编码问题则:
locale-gen en_US en_US.UTF-8
dpkg-reconfigure locales
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
注:
locale # 查看当前编码环境
locale -a # 查看所有支持的语言环境
如果add-apt-repository在您的VPS中不可用,请安装它。
apt-get install software-properties-common
或者,在较旧的Ubuntu版本上:
apt-get install python-software-properties
2.安装
安装前您可以通过以下方式查看存储库中的可用版本:
$ apt-cache policy apache2
apache2:
Installed: 2.4.7-1ubuntu4.18
Candidate: 2.4.33-1+ubuntu14.04.1+deb.sury.org+1
Version table:
2.4.33-1+ubuntu14.04.1+deb.sury.org+1 0
500 http://ppa.launchpad.net/ondrej/apache2/ubuntu/ trusty/main amd64 Packages
*** 2.4.7-1ubuntu4.18 0
500 http://mirrors.aliyun.com/ubuntu/ trusty-updates/main amd64 Packages
500 http://mirrors.aliyun.com/ubuntu/ trusty-security/main amd64 Packages
100 /var/lib/dpkg/status
2.4.7-1ubuntu4 0
500 http://mirrors.aliyun.com/ubuntu/ trusty/main amd64 Packages
开始安装吧:
apt install apache2
系统会自动更新至最新版本 2.4.33
apt-get install libapache2-mod-qos
安装模块后, 它将自动注册并启用自身。
配置文件路径:
/etc/apache2/mods-enabled/qos.conf
重启apache2
service apache2 restart
重新加载apache2的配置文件
apachectl graceful
使用a2enmod开启模块:
a2enmod qos
使用mod_reqtimeout和mod_qos两个模块相互配合来防护。
1、mod_reqtimeout用于控制每个连接上请求发送的速率。配置例如:
#请求头部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slowloris型的慢速攻击。
RequestReadTimeout header=10-40,minrate=500
#请求正文部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slow message body型的慢速攻击。
RequestReadTimeout body=10-40,minrate=500
需注意,对于HTTPS站点,需要把初始超时时间上调,比如调整到20秒。
2、mod_qos用于控制并发连接数。配置例如:
当服务器并发连接数超过600时,关闭keepalive
QS_SrvMaxConnClose 600
限制每个源IP最大并发连接数为50
QS_SrvMaxConnPerIP 50
这两个数值可以根据服务器的性能调整。
1.进入apache模块目录:
cd /etc/apache2/mods-enabled
2.给expires、headers两个模块建立软链:
ln -s ../mods-available/expires.load
ln -s ../mods-available/headers.load
3.建立配置文件、以及软链:
ln -s ../mods-available/expires.conf
ln -s ../mods-available/headers.conf
或者使用a2enmod开启模块:
a2enmod expires
a2enmod headers
4.编辑配置文件:
cat ../mods-available/expires.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "now plus 1 day"
ExpiresByType text/css "now plus 1 month"
ExpiresByType application/x-javascript "now plus 5 day"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
</IfModule>
cat ../mods-available/headers.conf
<IFModule mod_headers.c>
Header add Pragma "cache"
</IFModule>
5.重启apache2:
/etc/init.d/apache2 restart
利用mpm_prefork模块调整内存占用:
apt-get install apache2-mpm-prefork
比如需要对低内存设备优化:
1.修改:/etc/apache2/mods-enabled/mpm_prefork.conf
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 2
</IfModule>
StartServers 启动时建立的子进程数量
MinSpareservers和MaxSpareServers分别设置空闲子进程的最小和最大数量
MaxConnectionsPerChild 子进程最大连接数 (超过了释放内存)
2.修改:/etc/apache2/apache2.conf
KeepAlive off
KeepAlive 配置的含义:
对于HTTP/1.1的客户端来说,将会尽量的保持客户的HTTP连接,通过一个连接传送多份HTTP请求响应。
这样对于客户端来说,可以提高50%左右的响应时间,而于服务器端来说则降低了更多个连接的开销。
不过这个依赖于客户端是否想保持连接。IE默认是保持连接的,当你打开100个图片的网站时,IE有可能只打开2个连接,通过这两个连接传送数据,而不是开100个连接。
在 Apache 服务器中,KeepAlive 是一个布尔值,On 代表打开,Off 代表关闭,这个指令在其他众多的 HTTPD 服务器中都是存在的。
KeepAliveTimeout 为持久连接保持的时间,也就是说,在这此连接结束后开始计时,多长时间内没有重新发送HTTP请求,就断掉连接。默认设置为5秒,这个值可以大点,但不能太大,否则会出现同时等候过多连接,导致多的内存被占用。
一般是权限不够导致,尝试在<Directory /**>目录下添加
Require all granted
首先网络唤醒需要硬件支持,目前大部分主流的板载网卡都支持,只需在bios里开启即可,笔记本中thinkpad全系列都支持,部分品牌的部分型号是不支持的,比如我有2台acer笔记本不支持。(很多时候wol是为了节电考虑,但是电源插座是必须通电的,笔记本也是)
路由器中有相关插件可以直接进行唤醒,比如OpenWRT提供了wol和etherwake两个包来实现WOL功能
opkg update
opkg install wol etherwake
使用方法:
/usr/bin/wol 00:1D:5C:1F:5D:16
/usr/bin/etherwake 00:1D:5C:1F:5D:16
apt-get install wakeonlan
使用方法:
wakeonlan 00:1D:5C:1F:5D:16
下载地址:https://www.depicus.com/downloads/wolcmd.zip
使用方法:
打开cmd,CD到下载wolcmd的文件路径
wolcmd [mac address] [ip address] [subnet mask] [port number]
比如:
WolCmd.exe 1016932061F0 192.168.0.255 255.255.255.0 80
外网进行唤醒,前提是路由器上得设置端口映射,和mac绑定。
原理是这样的:
1.魔术包数据发送到外网地址的映射端口上。
2.由于做了映射,路由器会找到对应的IP地址。
3.IP与对应的mac地址绑定了,所以路由器自然得将数据包发到对应mac地址上。
4.此时数据包已经发到内网待唤醒主机上了,网卡判断数据帧符合唤醒内容,就把机器启动。
公网唤醒工具:http://ip.malu.me/wol/
断电后再通电自动唤醒:在BIOS中电源设置,Restore on AC设置为Last Stste。
用syncy实现百度云同步,能提供低成本的异地备份需求。
项目地址:https://github.com/wishinlife/SyncY
Ubuntu下使用我们只需要python版本即可:
#首先安装依赖包
pip install pycurl
pip install pycrypto #如果不使用加密可以不用装
#下载源码
git clone https://github.com/wishinlife/SyncY.git
#设置配置文件
cp SyncY/syncy /etc/config/syncy
配置文件:vim /etc/config/syncy
config syncy
option syncylog ''
option blocksize '10'
option ondup 'rename'
option datacache 'on'
option excludefiles '*/Thumbs.db'
option listnumber '100'
option retrytimes '3'
option retrydelay '3'
option maxsendspeed '0'
option maxrecvspeed '0'
option speedlimitperiod '0-0'
option syncperiod '0-24'
option syncinterval '3600'
option tasknumber '2'
option threadnumber '2'
config syncpath
option localpath '/mnt/example'
option remotepath '/apps/SyncY/example'
option enable '1'
option synctype 'upload'
#option encryption 'ARC4' # 0 is disable encryption
#option encryptkey 'This is a encrypt key'
config syncytoken
接下来,复制syncy.py到/usr/bin目录下,授予syncy.py可执行权限。
然后直接执行syncy.py获取用户码, 获取用户码后按照提示打开百度授权页面https://openapi.baidu.com/device
ubuntu启动脚本,在/etc/init.d目录下建立syncy文件并授予可执行权限,文件内容如下::
#!/bin/bash
case "$1" in
start)
/usr/bin/syncy.py &
;;
stop)
if [ -e /var/run/syncy.pid ] ; then
sypid=$(cat /var/run/syncy.pid)
kill $sypid
fi
;;
restart)
if [ -e /var/run/syncy.pid ] ; then
sypid=$(cat /var/run/syncy.pid)
kill $sypid
fi
sleep 1
/usr/bin/syncy.py &
;;
esac
ubuntu下运行可能会出现.syncy.info.db文件锁报错,解决办法是注释掉出错行:
vim /usr/bin/syncy.py
1429 with open(dbfile, 'rb') as sydb:
1430 #flock(sydb, LOCK_EX) <---注释
1431 datarec = sydb.read(40)
很多客户端工具可以直接通过代理访问mysql,但是在代码里面用代理比较麻烦。还好mysql官方为我们提供了mysql-proxy套件,可以用它以透明代理方式访问了。
下载地址:http://downloads.mysql.com/archives/proxy/
安装过程:
wget http://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-debian6.0-x86-64bit.tar.gz
tar -zxvf mysql-proxy-0.8.5-linux-debian6.0-x86-64bit.tar.gz
mkdir /usr/local/mysql-proxy
cp mysql-proxy-0.8.5-linux-debian6.0-x86-64bit/* /usr/local/mysql-proxy -R
编辑配置文件:vim /usr/local/mysql-proxy/mysql-proxy.conf
[mysql-proxy]
proxy-address = 0.0.0.0:9300 #监听地址和端口
admin-address = localhost:4041 #定义内部管理服务器账号,只做代理不用关注
admin-username = mytest
admin-password = 123456
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-backend-addresses = 192.168.0.56:3306 #实际mysql地址
启动:
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/mysql-proxy.conf &
mysql-proxy.conf配置文件权限设置为0660
配置文件里的中文注释不能跟在后面,请自行删除。