首页
关于本博客
友情链接
推荐
linux/shell
Search
1
LEDE官方固件安装中文语言包的方法
11,087 阅读
2
LEDE固件踢出弱信号客户端,实现WiFi无缝漫游脚本
9,183 阅读
3
基于CloudFlare API的纯Shell动态DNS(DDNS)脚本
8,153 阅读
4
一次OpenVPN交叉编译笔记
6,664 阅读
5
利用iptables的string模块来屏蔽域名(关键词匹配)
6,111 阅读
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
登录
Search
标签搜索
nginx
OpenWrt
openvpn
SSH
seafile
cloudflare
iptables
openssl
linux
letsencrypt
CentOS
反向代理
ftp
openvpn配置模板
vsftpd
seafile网盘
Linux启动脚本
ddns
nas
seafile服务器
自渡
累计撰写
75
篇文章
累计收到
1
条评论
首页
栏目
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
页面
关于本博客
友情链接
推荐
linux/shell
搜索到
13
篇与
shell
的结果
2024-10-21
linux操作系统下几种常见的压缩软件
在linux操作系统下,有多种常见的压缩软件可供使用。常见的一般有zip、gzip、bzip2、xz、tar、7z、rar等。这些软件在最新的Ubuntu/Debian操作系统中均可以使用apt/apt-get一键安装,下面是它们的一些使用方法:1. gzip用途:常用于压缩单个文件。扩展名:.gz命令:gzip filename解压命令:gunzip filename.gz2. bzip2用途:比gzip提供更高的压缩比,但速度较慢。扩展名:.bz2命令:bzip2 filename解压命令:bunzip2 filename.bz23. xz用途:提供更高的压缩率,适用于需要极小文件大小的场景。扩展名:.xz命令:xz filename解压命令:unxz filename.xz4. tar用途:用于打包多个文件为一个文件,通常与其他压缩工具结合使用。扩展名:.tar命令(打包并压缩):tar -czf archive.tar.gz directory/解压命令:tar -xzf archive.tar.gz5. zip用途:常用于压缩多个文件或目录,支持Windows系统。扩展名:.zip命令:zip -r archive.zip directory/解压命令:unzip archive.zip6. 7z用途:提供高压缩比,支持多种格式。扩展名:.7z命令:7z a archive.7z files/解压命令:7z x archive.7z8. rar用途:常见于windows操作系统。压缩率高,可以将文件压缩到更小的体积,支持加密文件名。扩展名:.rar命令:rar a archive.rar file1 file2 解压命令:unrar x archive.rar总结本文简单演示了linux操作系统下几个常见的压缩工具操作方法,这些工具各有优缺点,适合不同的使用场景。可以根据实际需求选择合适的压缩工具,有效减少存储空间,方便文件传输。
2024年10月21日
15 阅读
0 评论
0 点赞
2024-10-17
在Linux下使用openssl为文件加密
在服务器的日常使用中,经常需要迁移或者备份大量数据,如果是大型网站的话,会涉及到很多用户信息,我们在备份的时候,可以使用openssl为备份数据加密,进一步保障数据的安全。openssl在linux下默认是已经安装好的,它的功能非常强大,支持多种算法。aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb aria-128-cbc aria-128-cfb aria-128-cfb1 aria-128-cfb8 aria-128-ctr aria-128-ecb aria-128-ofb aria-192-cbc aria-192-cfb aria-192-cfb1 aria-192-cfb8 aria-192-ctr aria-192-ecb aria-192-ofb aria-256-cbc aria-256-cfb aria-256-cfb1 aria-256-cfb8 aria-256-ctr aria-256-ecb aria-256-ofb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 seed seed-cbc seed-cfb seed-ecb seed-ofb sm4-cbc sm4-cfb sm4-ctr sm4-ecb sm4-ofb 我们可以使用AES-256-CBC的算法来对文件backup.sql加密命令中,-aes256代表加密方式,-e代表进行加密操作,如果是-d则代表解密操作,-in是原始文件,-out是操作后的输出文件。openssl enc -e -aes256 -in backup.sql -out backup.aes #在交互式命令行中输入密码即可(密码不会显示在命令行) enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password:对已加密的文件进行解密openssl enc -d -aes256 -in backup.aes -out backup.sql enter aes-256-cbc decryption password:该命令默认是采用交互式进行,如果你想编写为脚本并设置密钥自动化运行,可以加上-k参数自动完成#加密,密钥设为123456 openssl enc -e -aes256 -in backup.sql -out backup.aes -k 123456 #解密 openssl enc -d -aes256 -in backup.aes -out backup.sql -k 123456不同版本openssl的加解密OpenSSL的高版本加密的文件有时无法使用低版本进行解密,这主要归因于不同版本间加密方式的差异,特别是默认摘要算法的改变。在OpenSSL 1.1.0及之后的版本中,默认的摘要算法已经从MD5更改为SHA-256。这一变更是为了提高安全性,因为MD5算法已被认为存在安全风险。因此,当使用1.1.0或更高版本进行加密时,如果未明确指定使用MD5摘要,那么加密过程中将采用SHA-256。然而,OpenSSL 1.0.2及更低版本的默认摘要算法仍为MD5。这意味着,如果使用这些低版本尝试解密由高版本使用SHA-256摘要加密的文件,将会出现不兼容的情况,导致解密失败。为了解决这个问题,可以在使用高版本OpenSSL进行加密时,通过指定-md md5选项来明确使用MD5摘要算法。这样,加密生成的文件就可以被低版本的OpenSSL正常解密。例如:# 使用OpenSSL 1.1.0或更高版本进行加密,并指定使用MD5摘要 openssl enc -d -aes-256-cfb -in backup.aes -out backup.sql -k 123456 -md md5 # 也可以指定使用SHA-256摘要算法 openssl enc -d -aes-256-cfb -in backup.aes -out backup.sql -k 123456 -md sha256
2024年10月17日
7 阅读
0 评论
0 点赞
2024-08-02
(2024年重写)基于shell的cloudflare动态ddns脚本
说明:1.该脚本需在Linux操作系统下运行,并配合crontab定时运行,请确保crond服务处于开启状态,建议1分钟检测一次IP变动,配置如下:crontab -e */1 * * * * cfddns.sh2.APIKEY和ZONE ID的具体获取方法参照以往发布过的说明:https://www.zavierlab.com/post/52.html以下为A记录脚本内容(适用于动态IPv4):#!/bin/sh CF_API_KEY= CF_ZONE_ID= #Your cloudflare E-mail EMAIL= #Your network device, e.g.,eth0 ROUTER_NETWORK_DEVICE= #Your DNS record, e.g.,www.domain.com DNS_RECORD= CF_DNS_ID=$(curl -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records?type=A&name=${DNS_RECORD}" -H "X-Auth-Email:${EMAIL}" -H "X-Auth-Key:${CF_API_KEY}" -H "Content-Type: application/json"|sed 's/,/\n/g'|grep -E "result.*id"|awk -F ":" '{print $3}'|sed 's/"//g') CURRENT_RESOLV=$( curl -k -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" |awk -F '"' '{print $26}' ) CURRENT_IP=$( ifconfig $ROUTER_NETWORK_DEVICE | awk -F'[ ]+|:' '/inet /{print $4}' ) if [ $CURRENT_RESOLV == $CURRENT_IP ]; then exit 1 else curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"'$DNS_RECORD'","content":"'$CURRENT_IP'","ttl":1,"proxied":false}' fi以下为AAAA记录DDNS脚本(适用于动态ipv6):#!/bin/sh CF_API_KEY= CF_ZONE_ID= #Your cloudflare E-mail EMAIL= #Your network device, e.g.,eth0 ROUTER_NETWORK_DEVICE= #Your DNS record, e.g.,www.domain.com DNS_RECORD= CF_DNS_ID=$(curl -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records?type=AAAA&name=${DNS_RECORD}" -H "X-Auth-Email:${EMAIL}" -H "X-Auth-Key:${CF_API_KEY}" -H "Content-Type: application/json"|sed 's/,/\n/g'|grep -E "result.*id"|awk -F ":" '{print $3}'|sed 's/"//g') CURRENT_RESOLV=$( curl -k -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" |awk -F '"' '{print $26}' ) CURRENT_IP=$( ifconfig $ROUTER_NETWORK_DEVICE |grep "prefixlen 128"|awk '{print $2}' ) if [ $CURRENT_RESOLV == $CURRENT_IP ]; then exit 1 else curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" \ --data '{"type":"AAAA","name":"'$DNS_RECORD'","content":"'$CURRENT_IP'","ttl":1,"proxied":false}' fi
2024年08月02日
169 阅读
0 评论
0 点赞
2019-03-24
cut命令的用法
面试时被问到了cut命令,平时用的少没达上来,特地整理了一下cut的选项。原文链接:http://man.linuxde.net/cutcut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。语法cut(选项)(参数)选项-b:仅显示行中指定直接范围的内容;-c:仅显示行中指定范围的字符;-d:指定字段的分隔符,默认的字段分隔符为“TAB”;-f:显示指定字段的内容;-n:与“-b”选项连用,不分割多字节字符;--complement:补足被选择的字节、字符或字段;--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;--help:显示指令的帮助信息;--version:显示指令的版本信息。参数文件:指定要进行内容过滤的文件。实例例如有一个学生报表信息,包含No、Name、Mark、Percent:[root@localhost text]# cat test.txt No Name Mark Percent01 tom 69 9102 jack 71 8703 alex 68 98使用 -f 选项提取指定字段:[root@localhost text]# cut -f 1 test.txt No010203[root@localhost text]# cut -f2,3 test.txt Name Marktom 69jack 71alex 68--complement 选项提取指定字段之外的列(打印除了第二列之外的列):[root@localhost text]# cut -f2 --complement test.txt No Mark Percent01 69 9102 71 8703 68 98使用 -d 选项指定字段分隔符:[root@localhost text]# cat test2.txt No;Name;Mark;Percent01;tom;69;9102;jack;71;8703;alex;68;98[root@localhost text]# cut -f2 -d";" test2.txt Nametomjackalex指定字段的字符或者字节范围cut命令可以将一串字符作为列来显示,字符字段的记法:N-:从第N个字节、字符、字段到结尾;N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:-b 表示字节;-c 表示字符;-f 表示定义字段。示例[root@localhost text]# cat test.txt abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz打印第1个到第3个字符:[root@localhost text]# cut -c1-3 test.txt abcabcabcabcabc打印前2个字符:[root@localhost text]# cut -c-2 test.txt ababababab打印从第5个字符开始到结尾:[root@localhost text]# cut -c5- test.txt efghijklmnopqrstuvwxyzefghijklmnopqrstuvwxyzefghijklmnopqrstuvwxyzefghijklmnopqrstuvwxyzefghijklmnopqrstuvwxyz
2019年03月24日
1,294 阅读
0 评论
0 点赞
2018-11-22
企业NAS部署(一)之基础配置
最近在帮企业部署内网网络存储(nas)系统,方便不同部门之间通过内网共享文件。Linux下的samba软件,能够很好地代替windows共享来完成该项目。服务器信息操作系统:CentOS 6.10硬盘:128G SSD+1TB HDD安装相关软件使用yum安装sambayum -y install samba在配置NAS之前关闭SELinux以及在iptables放行相关端口,或者关闭iptables,由于在内网,无需防火墙,因此我直接清空了自带的iptables规则setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config iptables -F service iptables saveSamba安装完毕后,默认的配置文件在/etc/samba/smb.conf,所有的共享参数均在此配置。首先是编辑/etc/samba/smb.conf,通过nano或者vi和WinSCP皆可,先编辑[global]全局选项[global] workgroup = WORKGROUP #工作组名,win下默认是WORKGROUP server string = Samba Server For Linux #自定义字符串,用于描述服务器 log file = /var/log/samba/log.%m #生成日志 max log size = 50 #指定日志大小 security = user #安全级别,这里表示所有用户均需要通过验证才可访问 passdb backend = smbpasswd #密码认证方式,有多种选项,这里选择smbpasswd方便后期员工自助修改密码 smb passwd file = /etc/samba/smbpasswd #这里指定了账户密码的存放文件路径 max connections = 0 #0表示无限制连接,也可手动指定一个数值来限制连接数 load printers = no #加载打印机共享,这里不设定打印机全局选项配置完毕后,就可以开始配置共享目录了,首先创建一个目录,专门用于存放NAS文件mkdir -p /media/samba编辑配置文件smb.conf中的文件夹选项,另起一行,示例如下#客户端看到的文件夹名称 [部门1] #该共享文件夹在服务器中对应的真实目录 path = /media/samba/部门1 #对该共享具有读取权限的用户 valid users = user1 user2 user3... #用户创建的文件和目录的默认权限 create mask = 0755 directory mask = 0755 #在首页是否隐藏,yes为不隐藏,no为隐藏 browseable = yes #对该共享具有写入权限的用户 write list = user1 user2 user3... #对该共享具有完全控制权限的用户 admin users = user1 user2 user3... #是否允许访客访问,yes为允许,no为禁止 guest ok = no [部门2] path = /media/samba/部门2 valid users = user1 user2 user3... create mask = 0755 directory mask = 0755 browseable = yes write list = user1 user2 user3... admin users = user1 user2 user3... guest ok = no #可根据实际需求,在配置内继续添加其他共享 ...创建真实目录mkdir -p /media/samba/部门1 mkdir -p /media/samba/部门2因为samba用户认证是使用本地用户名+smb独立密码的形式来认证,即用户名必须在系统内存在,所以我创建了一个名为smbuser的组,然后将公司员工的账号批量导入。在设置NAS密码时,使用的是smbpasswd,smbpasswd是一个交互式命令,其使用方法如下:smbpasswd -a 用户名 New password:(输入密码,密码不会显示在此处)因为这是一个交互式命令,所以给批量设置默认密码带来了许多麻烦,而幸好有expect命令来解决这个交互的问题。批量导入方法如下:安装expectyum -y install expect写一个批量导入脚本#!/usr/bin/expect spawn smbpasswd -a 用户1 expect "*password:" send "用户1的密码\r" expect "*password:" send "用户1的密码\r" interact spawn smbpasswd -a 用户2 expect "*password:" send "用户2的密码\r" expect "*password:" send "用户2的密码\r" interact ...然后赋予脚本执行权限并且执行就行了chmod +x 脚本名 ./脚本名配置基本已经完成了,接下去便是启动smb服务器service smb start将smb加入开机启动项chkconfig smb on
2018年11月22日
2,204 阅读
0 评论
0 点赞
1
2
3