smbpasswd
samba用户和密码管理工具
补充说明
smbpasswd命令 属于samba套件,能够实现添加或删除samba用户和为用户修改密码。
语法
smbpasswd(选项)(参数)
选项
-a:向smbpasswd文件中添加用户;
-c:指定samba的配置文件;
-x:从smbpasswd文件中删除用户;
-d:在smbpasswd文件中禁用指定的用户;
-e:在smbpasswd文件中激活指定的用户;
-n:将指定的用户的密码置空。
参数
用户名:指定要修改SMB密码的用户。
sort
对文本文件中所有行进行排序。
概要
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
主要用途
- 将所有输入文件的内容排序后并输出。
- 当没有文件或文件为
-时,读取标准输入。
选项
排序选项:
-b, --ignore-leading-blanks 忽略开头的空白。
-d, --dictionary-order 仅考虑空白、字母、数字。
-f, --ignore-case 将小写字母作为大写字母考虑。
-g, --general-numeric-sort 根据数字排序。
-i, --ignore-nonprinting 排除不可打印字符。
-M, --month-sort 按照非月份、一月、十二月的顺序排序。
-h, --human-numeric-sort 根据存储容量排序(注意使用大写字母,例如:2K 1G)。
-n, --numeric-sort 根据数字排序。
-R, --random-sort 随机排序,但分组相同的行。
--random-source=FILE 从FILE中获取随机长度的字节。
-r, --reverse 将结果倒序排列。
--sort=WORD 根据WORD排序,其中: general-numeric 等价于 -g,human-numeric 等价于 -h,month 等价于 -M,numeric 等价于 -n,random 等价于 -R,version 等价于 -V。
-V, --version-sort 文本中(版本)数字的自然排序。
其他选项:
--batch-size=NMERGE 一次合并最多NMERGE个输入;超过部分使用临时文件。
-c, --check, --check=diagnose-first 检查输入是否已排序,该操作不会执行排序。
-C, --check=quiet, --check=silent 类似于 -c 选项,但不输出第一个未排序的行。
--compress-program=PROG 使用PROG压缩临时文件;使用PROG -d解压缩。
--debug 注释用于排序的行,发送可疑用法的警报到stderr。
--files0-from=F 从文件F中读取以NUL结尾的所有文件名称;如果F是 - ,那么从标准输入中读取名字。
-k, --key=KEYDEF 通过一个key排序;KEYDEF给出位置和类型。
-m, --merge 合并已排序文件,之后不再排序。
-o, --output=FILE 将结果写入FILE而不是标准输出。
-s, --stable 通过禁用最后的比较来稳定排序。
-S, --buffer-size=SIZE 使用SIZE作为内存缓存大小。
-t, --field-separator=SEP 使用SEP作为列的分隔符。
-T, --temporary-directory=DIR 使用DIR作为临时目录,而不是 $TMPDIR 或 /tmp;多次使用该选项指定多个临时目录。
--parallel=N 将并发运行的排序数更改为N。
-u, --unique 同时使用-c,严格检查排序;不同时使用-c,输出排序后去重的结果。
-z, --zero-terminated 设置行终止符为NUL(空),而不是换行符。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
KEYDEF的格式为:F[.C][OPTS][,F[.C][OPTS]] ,表示开始到结束的位置。
F表示列的编号
C表示
OPTS为[bdfgiMhnRrV]中的一到多个字符,用于覆盖当前排序选项。
使用--debug选项可诊断出错误的用法。
SIZE 可以有以下的乘法后缀:
% 内存的1%;
b 1;
K 1024(默认);
剩余的 M, G, T, P, E, Z, Y 可以类推出来。
参数
FILE(可选):要处理的文件,可以为任意数量。
source
在当前Shell环境中从指定文件读取和执行命令。
概要
source filename [arguments]
主要用途
- 执行文件并从文件中加载变量及函数到执行环境
参数
filename:要执行的文件
arguments(可选):传递给文件的参数
返回值
source返回文件最后一个命令的返回值,如果文件不能读取则会失败
错误用法
-
文件在
$PATH中找不到。 -
文件未给出。
例子
-
在一些工具的执行过程中,会把环境变量设置以"export XXX=XXXXXX"或"declare XXX=XXXXXX"的形式导出到 一个文件中,然后用source加载该文件内容到执行环境中。
-
读取和执行/root/.bash_profile文件。
[root@localhost ~]# source ~/.bash_profile
Q&A
Q:source和sh在执行文件方面有什么区别?
A:sh的执行是在子shell中,source会使得被执行文件的变量及函数加载进当前终端环境内(除去函数内local修饰的变量等);建议您参考export命令的 知识点 部分
注意
- 该命令是bash内建命令,相关的帮助信息请查看
help命令。
speedtest-cli
命令行下测试服务器外网速度
补充说明
speedtest-cli 是一个使用python编写的命令行脚本,通过调用speedtest.net测试上下行的接口来完成速度测试,最后我会测试运维生存时间所在服务器的外网速度。项目地址:https://github.com/sivel/speedtest-cli
安装speedtest-cli
speedtest-cli需要在python 2.4-3.4的环境下,安装方法都很简单,自己选择以下最适合你的一种。
pip方式
# pip install speedtest-cli
easy_install方式
# easy_install speedtest-cli
github+pip方式
# pip install git+https://github.com/sivel/speedtest-cli.git
或者
# git clone https://github.com/sivel/speedtest-cli.git
# python speedtest-cli/setup.py install
下载脚本方式
# wget -O speedtest-cli https://raw.github.com/sivel/spe ... er/speedtest_cli.py
# chmod +x speedtest-cli
或者
# curl -o speedtest-cli https://raw.github.com/sivel/spe ... er/speedtest_cli.py
# chmod +x speedtest-cli
直接下载脚本,给予执行权限即可。
用法
-h, --help show this help message and exit
--share 分享你的网速,该命令会在speedtest网站上生成网速测试结果的图片。
--simple Suppress verbose output, only show basic information
--list 根据距离显示speedtest.net的测试服务器列表。
--server=SERVER 指定列表中id的服务器来做测试。
--mini=MINI URL of the Speedtest Mini server
--source=SOURCE Source ip address to bind to
--version Show the version number and exit
实例
列出所有在中国的测试服务器:
spell
对文件进行拼写检查
补充说明
spell命令 对文件进行拼写检查,并把拼写错误的单词输出。
语法
spell(参数)
参数
文件:指定需要进行拼写检查的文件。
split
分割任意大小的文件
补充说明
split命令 可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。
选项
-b:值为每一输出档案的大小,单位为 byte。
-C:每一输出档中,单行的最大 byte 数。
-d:使用数字作为后缀。
-l:值为每一输出档的行数大小。
-a:指定后缀长度(默认为2)。
实例
生成一个大小为100KB的测试文件:
[root@localhost split]# dd if=/dev/zero bs=100k count=1 of=date.file
1+0 records in
1+0 records out
102400 bytes (102 kB) copied, 0.00043 seconds, 238 MB/s
使用split命令将上面创建的date.file文件分割成大小为10KB的小文件:
[root@localhost split]# split -b 10k date.file
[root@localhost split]# ls
date.file xaa xab xac xad xae xaf xag xah xai xaj
文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:
[root@localhost split]# split -b 10k date.file -d -a 3
[root@localhost split]# ls
date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009
为分割后的文件指定文件名的前缀:
squid
squid服务器守护进程
补充说明
squid命令 高性能的Web客户端代理缓存服务器套件“squid”的服务器守护进程。
语法
squid(选项)
选项
-d:将指定调试等级的信息发送到标准错误设备;
-f:使用指定的配置文件。而不使用默认配置文件;
-k:向squid服务器发送指令;
-s:启用syslog日志;
-z:创建缓存目录;
-C:不捕获致命信号;
-D:不进行DNS参数测试;
-N:以非守护进程模式运行;
-X:强制进入完全调试模式。
squidclient
squid服务器的客户端管理工具
补充说明
squidclient命令 使用squid服务器的客户端管理工具,它可以查看squid服务器的详细运行信息和管理squid服务器。
语法
squidclient(选项)(参数)
选项
-a:不包含“accept:header”;
-r:强制缓存重新加载URL;
-s:安静模式,不输出信息到标准输出设备;
-h:从指定主机获取url
-l:指定一个本地ip地址进行绑定;
-p:端口号,默认为3128;
-m:指定发送请求的方法;
-u:代理认证用户名。
参数
URL:指定操作缓存中的URL。
ss
比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息
补充说明
ss命令 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。
天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。
语法
ss [参数]
ss [参数] [过滤]
选项
-h, --help 帮助信息
-V, --version 程序版本信息
-n, --numeric 不解析服务名称
-r, --resolve 解析主机名
-a, --all 显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字(sockets)信息
-m, --memory 显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info 显示 TCP内部信息
-s, --summary 显示套接字(socket)使用概况
-4, --ipv4 仅显示IPv4的套接字(sockets)
-6, --ipv6 仅显示IPv6的套接字(sockets)
-0, --packet 显示 PACKET 套接字(socket)
-t, --tcp 仅显示 TCP套接字(sockets)
-u, --udp 仅显示 UCP套接字(sockets)
-d, --dccp 仅显示 DCCP套接字(sockets)
-w, --raw 仅显示 RAW套接字(sockets)
-x, --unix 仅显示 Unix套接字(sockets)
-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE 从文件中都去过滤器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
实例
ss -t -a # 显示TCP连接
ss -s # 显示 Sockets 摘要
ss -l # 列出所有打开的网络连接端口
ss -pl # 查看进程使用的socket
ss -lp | grep 3306 # 找出打开套接字/端口应用程序
ss -u -a 显示所有UDP Sockets
ss -o state established '( dport = :smtp or sport = :smtp )' # 显示所有状态为established的SMTP连接
ss -o state established '( dport = :http or sport = :http )' # 显示所有状态为Established的HTTP连接
ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24 # 列举出处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 193.233.7/24所有 tcp套接字
# ss 和 netstat 效率对比
time netstat -at
time ss
# 匹配远程地址和端口号
# ss dst ADDRESS_PATTERN
ss dst 192.168.1.5
ss dst 192.168.119.113:http
ss dst 192.168.119.113:smtp
ss dst 192.168.119.113:443
# 匹配本地地址和端口号
# ss src ADDRESS_PATTERN
ss src 192.168.119.103
ss src 192.168.119.103:http
ss src 192.168.119.103:80
ss src 192.168.119.103:smtp
ss src 192.168.119.103:25
将本地或者远程端口和一个数比较
ssh
openssh套件中的客户端连接工具
补充说明
ssh命令 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。
语法
ssh(选项)(参数)
选项
-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份(私钥)文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。
参数
- 远程主机:指定要连接的远程ssh服务器;
- 指令:要在远程ssh服务器上执行的指令。
实例
# ssh 用户名@远程服务器地址
ssh user1@172.24.210.101
# 指定端口
ssh -p 2211 root@140.206.185.170
# ssh 大家族
ssh -p 22 user@ip # 默认用户名为当前用户名,默认端口为 22
ssh-keygen # 为当前用户生成 ssh 公钥 + 私钥
ssh-keygen -f keyfile -i -m key_format -e -m key_format # key_format: RFC4716/SSH2(default) PKCS8 PEM
ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务器的 ~/.ssh/authorized_keys,之后可以免密登录
背后故事
英文:Tatu Ylonen
编译:Linux中国/kenxx
来源:https://linux.cn/article-8476-1.html