Linux收集SSH爆破记录(拉入IP黑名单)

一:收集黑名单IP

收集大量的ssh登录信息。

#存文件便于以下的操作
lastb >> lastb.log                                                 
#过滤其它字段,只保留ip数据
cat lastb.log|awk -F " " '{print $3}' >> ips.log  
#记录ip的出现次数
cat ips.log | sort | uniq -c >> ip_uniq.log          
#最终形成列表
cat ip_uniq.log|sort -k1,1nr  >> output.log

以上命令也可以合并成一条命令:

lastb | awk -F " " '{print $3}' | sort | uniq -c | sort -k1,1nr >> output.log

查看文件内容:

 cat output.log

二:处理(拉黑)

神器登场: ipset,非自带,请用

 yum install ipset

或者

 apt-get -y install ipset

安装
简单讲一下 ipset 的使用:

#创建一个名称为 blacklist 的IP集合,最大容量为10000
ipset create blacklist hash:ip maxelem 100000
#查看你的IP集
ipset list
#增加ip
ipset add blacklist 1.1.1.1
ipset del blacklist 1.1.1.1
#再次查看IP集
ipset list

#将刚才的恶意IP导入到ipset中,方法有点蹩脚

#将刚才的恶意IP导入到ipset中,方法有点蹩脚
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' output.log | awk '{print "ipset add blacklist",$0}'|sh
#查看IP集
ipset list

最后,将ipset与iptables关联即可(注意ssh端口必须是你更改后)

iptables -I INPUT -m set --match-set blacklist  src -p tcp --destination-port 22 -j DROP 
iptables-save > /etc/iptables-script                                          #保存IP规则
iptables-restore > /etc/iptables-script                    #恢复IP规则,重启后使用恢复规则
#查看IP禁用规则
iptables -L -n

扩展:

iblocklist,这个网站已搜集了大量的恶意IP,可以直接拿来使用。

Linux下ssh修改(防爆破)

查看登录失败的记录

 lastb 

一般不修改ssh端口……可能会有上万条爆破记录,每秒钟登录几次的爆破形同DDOS……会严重拖慢VPS速度。

0、安装 vim:

sudo apt-get install vim-gtk 
yum -y install vim* 

1、修改配置文件:

 vim /etc/ssh/sshd_config 

找到#port 22
2、先将Port 22 前面的 # 号去掉,并另起一行。
在配置文件中,# 是Linux的注释字符。注释字符后的代码程序是不会执行的。SSH默认的(即非手动指定)端口为22,所以配置文件在默认的情况下以注释字符出现。当需要指定其它端口或多端口同时访问时,就要删掉注释符号,告知程序按照您的意愿来执行响应操作。

 
#port 22
port 50 

以上操作,手动指定SSH端口为22和26611(双端口号),保留22是为了防止个别防火墙屏蔽了其它端口导致无法连接VPS(如没单独指定22,新指定的26611端口防火墙也没放行,那么可能无法通过SSH连接VPS或服务器)。为了防止不必要问题的产生,所以要给自己保留条“后路”。

3、修改完毕后,重启SSH服务
修改保存sshd_config文件后重启sshd服务:

 systemctl restart sshd 

并退出当前连接的SSH端口。

Ubuntu和Debian系统 安装中文语言包

1.安装之前,执行

 echo $LANG

屏幕显示:en_US.UTF-8
说明现在是英语环境,需要切换到中文环境。

2、安装中文语言包,并重启

sudo apt-get update
sudo apt-get install language-pack-zh-hans
echo 'LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh"' | sudo tee /etc/default/locale
sudo locale-gen zh_CN.UTF-8

sudo reboot

3、安装之后,执行检查

 echo $LANG

一键shell脚本上传本地文件到FTP服务器

 

注意:
1、windows本地编辑必须注意编码,建议使用Notepad++编辑。
2、脚本必须赋予755执行权限。
3、需要安装FTP
4、宝塔后台执行计划任务格式:/root/脚本名称.sh

yum install ftp
apt-get install ftp

自动上传脚本如下:

#!/bin/sh
#将/www/backup/site目录的所有文件上传到FTP服务器根目录
#这里FTP使用99端口,注意IP地址和端口号后面都有一个空格
#-p 是设置为被动FTP方式,否则会连不上服务器

ftp -p -v -n 5.5.5.5 99 <<EOF
user 80tm dsafdsafds
binary
hash
cd ./
lcd /www/backup/site
prompt
mput *
bye
#here document
EOF
echo “commit to ftp successfully”

命令解释
登录FTP
ftp -i -n 10.11.10.11 99 << EOF
<< 是使用即时文件重定向输入
EOF是即时文件的标志它必须成对出现,以标识即时文件的开始和结尾。
ftp常见的几个标志有:

-d:使用调试模式,但必须编辑 /etc/syslog.conf 文件并添加以下中的一项:user.info FileName 或 user.debug FileName。
-g:禁用文件名中的元字符拓展,即取消全局文件名。
-i :关闭多文件传输中的交互式提示。
-n:防止在起始连接中的自动登录。否则, ftp 命令会搜索 $HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。
-v:显示远程服务器的全部响应,并提供数据传输的统计信息,即在程序运行时显示详细的处理信息。

输入FTP用户名和密码
user ftpuser ftppwd
ftpuser:登录FTP时的用户名
ftppwd:登录FTP时的密码

通过binary命令传输文件
binary
FTP文件传输类型有: ascii、binary、ebcdic、image、local M 和 tenex。

– ascii:将文件传输类型设置为网络 ASCII。此类型为缺省值,即默认使用ascii方式进行传输。
– binary:将文件传输类型设置为二进制映像。需要使用binary方式传输的文件类型有ISO文件、可执行文件、压缩文件、图片等。此类型可能比 ASCII 传送更有效。
– ebcdic:将文件传输类型设为 EBCDIC。
– image:将文件传输类型设置为二进制映像。此类型可能比 ASCII 传送更有效。
– local M:将文件传输类型设置为本地。M 参数定义每计算机字位的十进制数。此参数没有缺省值。
– tenex:将文件传输类型设为 TENEX 机器需要的类型。

切换散列符号 (#) 打印
hash
当用get或put命令传送一个数据块时,让FTP显示一个#,这是看得见的确定数据在传输的信号,在用户不确信网络是否工作时有用。当传输很大的文件时,如果FTP已显示这种信息,表示传输正在进行。hash命令是一个布尔变量式的命令,用hash命令打开显示#开关,再用hash命令关闭显示。

切换目录
分别在本地和FTP上进入对应文件夹下:
到FTP上对应路径(这里表示进入Dwon文件夹下):
cd ./Down

到本地的对应路径(这里表示在当前文件夹下):
lcd ./

切换交互式提示
prompt
使用mget或mput时,prompt命令让FTP在传输每个文件前进行提示,这样防止覆盖已有的文件。若发出prompt命令时已经启动了提示,FTP将把提示关掉,此时再传输所有的文件则不会有任何提问。

一键shell加密备份网站和数据库脚本

Linux服务器SSH挂断后继续后台运行命令

一键shell加密备份网站和数据库脚本1

 

注意:
1、windows本地编辑必须注意编码,建议使用Notepad++编辑
2、必须赋予755执行权限
3、宝塔异常进程监控会结束rm进程,建议关闭异常进程监控(宝塔系统加固),否则无法删除备份的数据库文件
4、建议在网站配置中禁止访问 /MySQL_bak 目录。
5、宝塔后台执行计划任务格式:/root/脚本名称.sh

空格字符转换


sudo apt-get install dos2unix # 如果尚未安装
dos2unix /root/beifen1688.sh

#!/bin/bash
# Author:Tespera
# Blog: https://www.80tm.com

## 备份配置信息 ##

# 备份名称,用于标记
BACKUP_NAME="www.80tm.com"
# 备份目录,多个请空格分隔
BACKUP_SRC="/home/www "
# Mysql主机地址
MYSQL_SERVER="127.0.0.1"
# Mysql用户名
MYSQL_USER="user"
# Mysql密码
MYSQL_PASS="password"
# Mysql备份数据库,多个请空格分隔
MYSQL_DBS="blog"
# 备份文件存放目录
BACKUP_DIR="/Data/Backup"
# 备份文件压缩密码
BACKUP_FILE_PASSWD="www.80tm.com"
# 备份文件保留天数
SAVE_DAYS="30"
## 备份配置信息 End ##



## 以下内容无需修改 ##

NOW=$(date +"%Y%m%d%H%M%S") #精确到秒,同一秒内上传的文件会被覆盖

mkdir -p $BACKUP_DIR
mkdir -p $BACKUP_SRC/MySQL_bak

# 备份 MySQL
echo -e "\nStart dump MySQL ..."
for db_name in $MYSQL_DBS; do
    if ! mysqldump --no-tablespaces -u $MYSQL_USER -h $MYSQL_SERVER -p"$MYSQL_PASS" "$db_name" > "$BACKUP_SRC/MySQL_bak/$BACKUP_NAME-$db_name-$NOW.sql"; then
        echo "MySQL dump failed for database $db_name" | tee -a $BACKUP_DIR/backup.log
        exit 1
    fi
done
echo "Dump MySQL OK !"

# 打包备份文件
echo -e "\nStart tar ..."
BACKUP_FILENAME="$BACKUP_NAME-backup-$NOW.zip"
zip -q -r -P $BACKUP_FILE_PASSWD $BACKUP_DIR/$BACKUP_FILENAME $BACKUP_SRC/MySQL_bak/*.sql $BACKUP_SRC
echo "tar OK ! "

# 清理临时备份文件
echo -e "\nStart clean temp file ..."
rm -rf $BACKUP_SRC/MySQL_bak/*.sql
echo "Clean temp file OK !"

# 清理过期备份文件
echo -e "\nStart clean outdated file ..."
find $BACKUP_DIR -type f -name "*zip" -mtime +$SAVE_DAYS -exec rm -rf {} \;
echo "Clean outdated file OK !"

# 写入日志
echo "$NOW  Backup $BACKUP_SRC successifully!" >> $BACKUP_DIR/backup.log 2>&1

# 备份结束
echo -e "\033[32m \nBackup Successifully! \n \033[0m" 

参考自:https://github.com/Tespera/AutoBackupWebsite

一键shell脚本上传本地文件到FTP服务器

Linux服务器SSH挂断后继续后台运行命令

Debian/Ubuntu用rclone挂载Google Drive团队盘1

需要注意,在rclone官网查看可以挂载哪些网盘!

CentOS或者其它Linux系统,请使用以下命令安装rclone

在Windows电脑上下载Rclone,下载地址:https://rclone.org/downloads 然后解压至D盘根目录,将文件夹重新命名为rclone,按下键盘Win+R,然后输入cmd,确定;在出现的命令框中依次输入以下命令:

cd /d d:\rclone
rclone authorize "onedrive"
 curl  https://rclone.org/install.sh | sudo bash 

onedrive需要从windows端获得API ID,谷歌网盘挂载直接在挂载中途获取

Debian/Ubuntu系统安装rclone

 wget https://www.80tm.com/wp-download/rclone_debian.sh && bash rclone_debian.sh 

初始化配置

 rclone config 
 root@80tm:~#  rclone config
2020/04/10 02:03:40 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> googlepan1 #给项目起一个名字
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Citrix Sharefile
   \ "sharefile"
 9 / Dropbox
   \ "dropbox"
10 / Encrypt/Decrypt a remote
   \ "crypt"
11 / FTP Connection
   \ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
13 / Google Drive
   \ "drive"
14 / Google Photos
   \ "google photos"
15 / Hubic
   \ "hubic"
16 / In memory object storage system.
   \ "memory"
17 / JottaCloud
   \ "jottacloud"
18 / Koofr
   \ "koofr"
19 / Local Disk
   \ "local"
20 / Mail.ru Cloud
   \ "mailru"
21 / Mega
   \ "mega"
22 / Microsoft Azure Blob Storage
   \ "azureblob"
23 / Microsoft OneDrive
   \ "onedrive"
24 / OpenDrive
   \ "opendrive"
25 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
26 / Pcloud
   \ "pcloud"
27 / Put.io
   \ "putio"
28 / QingCloud Object Storage
   \ "qingstor"
29 / SSH/SFTP Connection
   \ "sftp"
30 / Sugarsync
   \ "sugarsync"
31 / Transparently chunk/split large files
   \ "chunker"
32 / Union merges the contents of several remotes
   \ "union"
33 / Webdav
   \ "webdav"
34 / Yandex Disk
   \ "yandex"
35 / http Connection
   \ "http"
36 / premiumize.me
   \ "premiumizeme"
Storage> 13 #13是谷歌网盘
** See help for drive backend at: https://rclone.org/drive/ **

Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id> #直接回车
Google Application Client Secret
Setting your own is recommended.
Enter a string value. Press Enter for the default ("").
client_secret> #直接回车
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1 #完全的访问权限
ID of the root folder
Leave blank normally.

Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.

Note that if this is blank, the first time rclone runs it will fill it
in with the ID of the root folder.

Enter a string value. Press Enter for the default ("").
root_folder_id> 
回车默认设置
Service Account Credentials JSON file path 
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> 
回车默认设置
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n #不需要进入高级配置
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> n #不需要自动配置
Please go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=sK4NOjkW4PvvlACA2FmRlg
Log in and authorize rclone for access
Enter verification code> 4/ygGcD一长串数字  #复制上面的谷歌链接到浏览器地址打开授权获取授权码填写到这里
Configure this as a team drive?
y) Yes
n) No (default)
y/n> y #选择谷歌团队盘
Fetching team drive list...
Choose a number from below, or type in your own value
 1 / drive2
   \ "0ACwUIdUjXa-sdafsd"
 2 / drive3
   \ "0AEgZyJlnodsaf"
Enter a Team Drive ID> 1 #多个团队盘,选择是哪一个
--------------------
[googlepan1]
type = drive
scope = drive
token = {"access_token":"ya29.a0Ae4lvC3S4gpa3jiQzypd8-cqQ_L4J2ROVXdsafsd0jd9hNaXy_2G_z1mHrsP5KgZRNCb5uG3rmIJC6r8AjPg2EBdKTB6pAnwy56-kPnsL8-E3Rx77_efreY7LrWTLR5btnAuSgeXb_DKycTDc","token_type":"Bearer","refresh_token":"1//0hdsafasdBM6CgYIARAAGBESNwF-L9IrCEv9WpzWi18y1OnktS6w2gLpo16SAzhTiQd8eLkxTWW2Tmg3SPAWOs90dC8jfkuddDT0","expiry":"2020-04-10T03:04:22.461408986Z"}
team_drive = 0ACwUIdUffa-CUk9PVA
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y #需要有编辑权限
Current remotes:

Name                 Type
====                 ====
googlepan1           drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q #退出
 

使用说明

### 文件上传
rclone copy /home/backup gdrive:backup # 本地路径 配置名字:谷歌文件夹名字
### 文件下载
rclone copy gdrive:backup /home/backup
### 列表
rclone ls gdrive:backup
rclone lsl gdrive:backup # 比上面多一个显示上传时间
rclone lsd gdrive:backup # 只显示文件夹
### 新建文件夹
rclone mkdir gdrive:backup
### 挂载
rclone mount gdrive:mm /root/mm &
### 卸载
fusermount -u  /root/mm

#### 其他 ####
#### https://softlns.github.io/2016/11/28/rclone-guide/
rclone move <源文件夹> <目标远程>:<目标文件夹路径>   剪切上传整个文件夹的文件
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。   –dry-run标志来检查要复制、删除的数据
rclone move - 将源数据移动到目的地址。
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。.
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。
#### 其他 ####
挂载到本地
apt-get install -y nload htop fuse p7zip-full

#::挂载为磁盘
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
 
#::卸载磁盘
fusermount -qzu LocalFolder

开机自启
先新建systemd配置文件,适用CentOS 7、Debian 8+、Ubuntu 16+
#将后面修改成你上面手动运行命令中,除了rclone的全部参数
command=”mount googlepan1: /root/GoogleDrive –copy-links –no-gzip-encoding –no-check-certificate –allow-other –allow-non-empty –umask 000″
#以下是一整条命令,一起复制到SSH客户端运行
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
After=network-online.target

[Service]
Type=simple
ExecStart=$(command -v rclone) ${command}
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF

 

开始启动:

systemctl start rclone

设置开机自启:

systemctl enable rclone

其他命令:
重启:

systemctl restart rclone

停止:

systemctl stop rclone

状态:

systemctl status rclone

如果你想挂载多个网盘,那么将systemd配置文件的rclone.service改成rclone1.service即可,重启动什么的同样换成rclone1。

VPS服务器测试命令1

wget下载综合使用方法

下载后自动重命名:

wget http://photoapps.yd.chaoxing.com/MobileApp/GDSL/teshu/pdzx/GDSL8149.pdzx -O 中国经济双重转型之路.pdzx 

-O 文件名.后缀 -O参数是用来重写下载文件名的
说明一下wget的用法。

使用 wget 下载一个目录下的所有文件

wget -r -np -nH -R index.html http://url/including/files/you/want/to/download/

各个参数的含义:
-r : 遍历所有子目录
-np : 不到上一层子目录去
-nH : 不要将文件保存到主机名文件夹
-R index.html : 不下载 index.html 文件

1、下载整个http或者ftp站点

wget http://place.your.url/here

这个命令可以将http://place.your.url/here 首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地当前目录。

wget -r http://place.your.url/here

这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址 同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。

要是您想制作镜像站点,那么可以使用-m参数,例如:

wget -m http://place.your.url/here

这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。

2、断点续传
当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,例如:

wget -c http://the.url.of/incomplete/file

使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。

3、批量下载
如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:

wget -i download.txt

这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

4、选择性的下载
可以指定让wget只下载一类文件,或者不下载什么文件。例如:

wget -m –reject=gif http://target.web.site/subdirectory

表示下载http://target.web.site/subdirectory,但是忽略gif文件。–accept=LIST 可以接受的文件类型,–reject=LIST拒绝接受的文件类型。

5、密码和认证
wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:

–http-user=USER    设置HTTP用户
–http-passwd=PASS   设置HTTP密码

对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。

6、利用代理服务器进行下载
如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器:

http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080

分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:

–proxy-user=USER       设置代理用户
–proxy-passwd=PASS     设置代理密码

这两个参数,使用参数–proxy=on/off 使用或者关闭代理;wget还有很多有用的功能,需要自己可以去了解一下参数和用法。

wget的使用格式

 

Usage: wget [OPTION]… [URL]…

1、用wget做站点镜像

wget -r -p -np -k http://dsec.pku.edu.cn/~usr_name/
or
wget -m http://dsec.pku.edu.cn/~usr_name/

2、在不稳定的网络上下载一个部分下载的文件,以及在空闲时段下载

wget -t 0 -w 31 -c http://dsec.pku.edu.cn/BBC.avi -o down.log &

或者从filelist读入要下载的文件列表

wget -t 0 -w 31 -c -B ftp://dsec.pku.edu.cn/linuxsoft -i filelist.txt -o down.log &

上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中将不方便当时下载的URL链接拷贝到内存中然后粘贴到文件 filelist.txt中,在晚上要出去系统前执行上面代码的第二条。

3、使用代理下载

wget -Y on -p -k https://sourceforge.net/projects/wvware/

代理可以在环境变量或wgetrc文件中设定。

在环境变量中设定代理:

export PROXY=http://211.90.168.99:8080/

在~/.wgetrc中设定代理:

http_proxy = http://proxy.yoyodyne.com:18023/
ftp_proxy = http://proxy.yoyodyne.com:18023/

 

wget各种选项分类列表

1、启动

-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

2、记录和输入文件

-o, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书
–sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–egd-file=FILE 指定EGD socket的文件名

3、下载

–bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
–spider 不下载任何东西
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –proxy=on/off 打开或关闭代理
-Q, –quota=NUMBER 设置下载的容量限制
–limit-rate=RATE 限定下载输率

4、目录

-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录

5、HTTP选项

–http-user=USER 设定HTTP用户名为 USER.
–http-passwd=PASS 设定http密码为 PASS.
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).
-E, –html-extension 将所有text/html文档以.html扩展名保存
–ignore-length 忽略 `Content-Length’头域
–header=STRING 在headers中插入字符串 STRING
–proxy-user=USER 设定代理的用户名为 USER
–proxy-passwd=PASS 设定代理的密码为 PASS
–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.
–no-http-keep-alive 关闭 HTTP活动链接 (永远链接).
–cookies=off 不使用 cookies.
–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

6、FTP选项

-nr, –dont-remove-listing 不移走 `.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
–passive-ftp 使用被动传输模式 (缺省值).
–active-ftp 使用主动传输模式
–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

7、递归下载

-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷).
–delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr.
-p, –page-requisites 下载显示HTML文件的所有图片

8、递归下载中的包含和不包含(accept/reject)

-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
–exclude-domains=LIST 分号分隔的不被接受的域的列表
–follow-ftp 跟踪HTML文档中的FTP链接
–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录

wget -S –spider url 不下载只显示过程。

Linux服务器SSH挂断后继续后台运行命令

linux强制覆盖复制所有文件与不覆盖复制所有文件

linux强制覆盖复制所有文件与不覆盖复制所有文件

强制不提示覆盖复制所有文件:

 cp -Rf /root/OneDrive/* /root/gdrive/ 

 

不覆盖不提示复制所有文件:

 awk 'BEGIN { cmd="cp -ri /root/OneDrive/* /root/gdrive/"; print "n" |cmd; }' 

 

源目录:/root/OneDrive/  #所有文件末尾加*即可
目标目录:/root/gdrive/
 
查看复制进程是否存在:

pgrep -l cp 

 
多文件配合挂断命令执行,效果更佳:

Linux服务器SSH挂断后继续后台运行命令

net-speeder加速工具(可搭配BBR,比锐速好用)

项目:https://github.com/snooda/net-speeder

原理:双倍发包,配合BBRplus使用效果更好

开始安装

apt-get install zip
apt install unzip
wget https://github.com/snooda/net-speeder/archive/master.zip
unzip master.zip 

debian/ubuntu:
#安装libnet-dev:

apt-get install libnet1-dev 

#安装libpcap-dev:

apt-get install libpcap0.8-dev  

#安装gcc:

apt-get install gcc  

#安装libnet-dev:

apt-get libnet-dev  

编译:
Linux Cooked interface使用编译(venetX,OpenVZ):

cd net-speeder-master
chmod +x build.sh
sh build.sh -DCOOKED 

普通网卡使用编译(Xen,KVM,物理机):

cd net-speeder-master
chmod +x build.sh
sh build.sh 

使用方法(需要root权限启动):

#参数:./net_speeder 网卡名 加速规则(bpf规则)
#ovz用法(加速所有ip协议数据):

./net_speeder eth0 "ip"       #eth0为网卡名称

 

如果kvm下报错:err msg:[libnet_write_raw_ipv4(): -1 bytes written (Message too long)
#关闭tso

apt-get install ethtool
ethtool -K eth0 tso off         #eth0为网卡名称
ethtool -K eth0 ufo off

以下两项关闭操作谨慎使用:

ethtool -K eth0 tx off
ethtool -K eth0 rx off tx off tso off gso off 

原理:原本默认是网卡硬件芯片替cpu分担一部分传输处理负荷,但是在vps中由于网卡是虚拟的,几十甚至上百台虚拟机共用一个物理网卡,通常的情况是网卡本身就忙到死,cpu却很空闲,这时修改参数,让cpu来承担这部分工作能改善一下网络性能。

终极用法:

nohup ./net_speeder eth0 "ip" >/dev/null 2>&1 & 
exit

查看net-speeder是否运行:

ps aux|grep net_speeder|grep -v grep  

终止net-speeder运行:

pkill -f net_speeder  

Linux服务器SSH挂断后继续后台运行命令

VPS服务器一些加速脚本