自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 shell脚本案例(初级)

案例一:批量生产随机字符文件名使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下:xxxxxxxxxx_oldboy.html#!/bin/bash#DIR=/oldboy[ -d /oldboy ] || mkdir $DIRfor i in {1..10}do filename=`head /dev/urandom | md5sum |tr [0-9] [a-z] | cut -c 1-10`

2020-11-12 16:17:45 986 3

原创 高级shell扩展---sort命令

sortsort可针对文本文件的内容,以行为单位来排序。语法sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]参数-b 忽略每行前面开始出的空格字符。-c 检查文件是否已经按照顺序排序。-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。-f 排序时,将小写字母视为大写字母。-i 排序时,除了040至176之间的ASCII字符外,

2020-11-06 14:48:08 31

原创 高级shell扩展---uniq命令

uniquniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。语法uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]参数:-c或--count 在每列旁边显示该行重复出现的次数。-d或--repeated 仅显示重复出现的行列。-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。-s<

2020-11-06 14:46:19 26

原创 高级shell扩展---stty命令

stty修改终端命令行的相关设置选项-a:以容易阅读的方式打印当前的所有配置[root@localhost ~]# sttyspeed 38400 baud; line = 0;-brkint -imaxbel[root@localhost ~]# stty -aspeed 38400 baud; rows 25; columns 134; line = 0;intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <u

2020-11-06 14:44:12 44

原创 高级shell编程笔记(第三十三章 杂项)

第三十三章 杂项33.1 交互式和非交互式的shell和脚本交互式的shell在tty终端从用户的输入中读取命令。另一方面,shell能在启动时读取启动文件,显示一个提示符并默认激活作业控制。用户能交互地使用shell。运行脚本的shell一般都是非交互的shell。但脚本仍然可以存取他拥有的终端。脚本里甚至可以仿效成可交互的shell。#!/bin/bash#MY_PROMPT='$ 'while :do echo -n "$MY_PROMPT" read line eval

2020-11-06 14:31:53 200

原创 高级shell编程笔记(第三十二章 脚本编程分格)

第三十二章 脚本编程分格写脚本时养成结构化和系统方法的习惯。要养成在写代码前花几分钟来规划和组织你的想法。注意这节文档不是一个官方 Shell 编程风格。32.1 非官方的Shell脚本风格注释你的代码。这会使你的代码更容易让别人理解和赏识,同时也便于你维护。PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"# 当你去年写下这句代码时非常的了解它在干什么事,但现在它完全是一个谜.给脚本和函数加上描述性的头部信息#!/bin/bash#*

2020-11-06 14:09:05 10

原创 高级shell编程笔记(第三十一章 Gotchas)

第三十一章 Gotchas将保留字和字符声明为变量名case=value0 #引发错误23skidoo=value1 #引发错误#以数字开头的变量名是由shell保留使用的#试试_23skidoo=value1. 用下划线开头的变量名是允许的#但是... 仅使用下划线来用做变量名也是不行的_=25echo $_ #$_是一个特殊的变量,被设置为最后的命令的最后一个参数xyz((!*=value2 #引起严重错误用连字符或其他保留字符当做变量(或函数名)var-1=

2020-11-06 14:01:26 52

原创 高级shell编程笔记(第三十章 选项)

第三十章 选项set 命令用来在脚本里激活各种选项。在脚本中任何你想让选项生效的地方,插入set -o option-name 或用更简短的格式 set -option-abbrev。这两种格式都是等价的。#!/bin/bashset -o verbose #执行前打印命令#!/bin/bashset -v #和上面的有完全相同的效果注意:为了在脚本里停用一个选项,插入 set +o option-name 或 set +option-abbrev#!/bin/bashset -

2020-11-03 16:19:51 14

原创 高级shell编程笔记(第二十九章 调试)

第二十九章 调试Bash shell 没有自带调试器,甚至没有任何调试类型的命令或结构。脚本里的语法错误或拼写错误会产生含糊的错误信息,通常这些在调试非功能性的脚本是没什么帮助。Example 29-1 一个错误的脚本#!/bin/bash#a=37if [$a -gt 27 ];then echo $afiexit 0#错误信息 #[root@zhhs-mail shell]# sh test.sh #test.sh: line 4: [37: command not foun

2020-11-03 16:11:48 11

原创 高级shell编程笔记(第二十八章 关于zeros和nulls)

第二十八章 关于zeros和nulls/dev/zero 和 /dev/null使用/dev/null把/dev/null 看作"黑洞"。它非常等价于一个只写文件。所有写入它的内容都会永远丢失。 /dev/null 对命令行和脚本都非常的有用。禁止标准输出cat $filename >/dev/null#文件内容丢失,而不会输出到标准输出.禁止标准错误rm $badname 2>/dev/null#这样错误信息[标准错误]就被丢到黑洞了.禁止标准输出和标准错误输出cat

2020-11-03 16:03:49 11

原创 高级shell编程笔记(第二十七章 /dev 和 /proc)

第二十七章 /dev 和 /proc27.1 /dev在/dev目录内包含以或不以硬件形式出现的物理设备条目。包含被挂载的文件系统的硬设备分区在/dev目录下都有对应的条目,就像 df 命令所展示的。[root@mail shell]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/mapper/centos-root 17811456 4809860 13001596 28% /devt

2020-11-03 16:00:56 22

原创 高级shell编程笔记(第二十六章 数组)

第二十六章 数组较新的Bash版本支持一维数组。数组元素可以用符号variable[xx]来初始化。另外,脚本可以用declare -a variable 语句来清楚地指定一个数组。要访问一个数组元素,可以使用花括号来访问,即${variable[xx]}。Example 26-1 简单的数组用法#!/bin/bash#area[11]=23area[13]=37area[51]=UFOs#数组成员不必一定要连贯或连续的#数组的一部分成员允许不被初始化#数组中空缺元素是允许的#实际上

2020-10-27 17:45:22 22

原创 高级shell编程笔记(第二十五章 列表结构)

第二十五章 列表结构"与列表(and list)"和"或列表(or list)"结构提供一种处理一串连续命令的方法。它们能有效地替代复杂的嵌套if/then语句,甚至可以代替case语句。与列表(and list)command-1 && command-2 && command-3 && ... command-n如果每个命令都返回真,将会一次执行下去。当某个命令返回假,整个命令链就会结束执行。Example 25-1 使用用"与列表(and l

2020-10-27 09:56:18 98 3

原创 高级shell编程笔记(第二十四章 别名)

第二十四章 别名Bash别名本质上是一个简称、缩写,这可避免键入过长的命令序列。例如:如果我们添加 alias lm=“ls -l | more” 这一行到文件~./bashrc 文件里,然后每次在命令行键入lm将会自动被替换成ls -l | more。这使用户在命令行不必键冗长的命令序列,也避免了记忆复杂的命令及众多选项。设置alias rm=“rm -i”(交互式删除)能避免你不小心删除重要文件。在脚本里,别名机制不是非常的有用。如果把别名机制相像成C预处理器的某些功能将会非常好,比如宏扩展;但是,

2020-10-27 09:52:52 53

原创 高级shell编程笔记(第二十三章 函数)

第二十三章 函数和真正的编程语言一样,Bash也有函数,虽然在某些实现方面稍有些限制。一个函数是一个子程序,用于实现一串操作的代码块,它是完成特定任务的"黑盒子"。当有重复代码,当一个任务只需要很少的修改就被重复几次执行时,这时应考虑使用函数。function function_name{ command...}#或function_name () { command...}Example 23-1 简单函数#!/bin/bash#JUST_A_SECOND=1f

2020-10-26 18:10:48 13

原创 高级shell编程笔记(第二十二章 进程替换)

第二十二章 进程替换进程替换与命令替换(command substitution)很相似。命令替换把一个命令的结果赋给一个变量。例如 dir_contents=`ls -al`或 xref=$( grep word datafile)。进程替换则是把一个进程的输出回馈给另一个进程 (换句话说,它把一个命令的结果发送给另一个命令)。启动进程替换。它是用/dev/fd/文件把在圆括号内的进程的处理结果发送给另外一个进程。(注:实际上现代的 UNIX 类操作系统提供的/dev/fd/n 文件是与文件描述相关

2020-10-26 17:59:35 18

原创 高级shell编程笔记(第二十一章 受限shell)

第二十一章 受限shell在受限 shell 中运行的脚本或脚本的个代码断会禁用一些正常 shell 中可以执行的命令。这是限制脚本用户的权限和最小化运行脚本导致的破坏的安全措施。Example 21-1 在受限的情况下运行脚本#!/bin/bash##脚本开头以"#!/bin/bash -r"来调用,会使整个脚本在受限模式下运行.echoecho "Changing directory"cd /usr/localecho "Now in `pwd`"echo "Coming back

2020-10-26 17:59:11 10

原创 shell高级编程笔记(第二章 带着一个Sha-Bang出发)

第二章 带着一个Sha-Bang出发Sha-Bang指的是#!Example 2.1 一个清除/var/log下的log文件的脚本#!/bin/bash#清除脚本v1#要使用根用户执行脚本LOG_DIR=/var/logcd $LOG_DIRcat /dev/null > messagescat /dev/null > wtmpecho "Logs cleaned up."exit #这是一种正确并且合适点的退出脚本的方法Example 2.3 一个真正意义上

2020-10-26 17:52:14 15

原创 使用sendmail和postfix搭建邮件服务

邮件相关名词MUA:用户代理端,即用户使用的写信、收信客户端软件。常用的MUA有:OE、Outlook、FoxMail、Thunderbird。Mutt。MTA:邮件传输代理工具,通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。常用的MTA有:SendMail(邮件的鼻祖)、Qmail、Postfix(比sendmail兼容效率更高)、Exim、Exchange。

2020-10-21 11:06:32 209 1

原创 高级shell编程笔记(第二十章 子shell)

第二十章 子shell每个 shell 脚本有效地运行在父 shell 的一个子进程里。这个父 shell 是指在一个控制终端或在一个 xterm 窗口中给你命令指示符的进程。shell 脚本也能启动他自已的子进程。这些子 shell(即子进程)使脚本因为效率而同时进行多个子任务执行时能做串行处理。一般来说,脚本里的一个外部命令(external command)能生成(forks)出一个子进程,然而 Bash 内建(builtin)的命令却不这样做,因此,内建命令比起外部的等价命令执行起来更快。圆

2020-09-22 17:06:18 21

原创 高级shell编程笔记(第十九章 正则表达式)

第四部分 高级第十九章 正则表达式一个简要的正则表达式介绍一个正式表达式是一个字符串。字符串里的字符被称为元字符,它们可能表示了比它们字面上看起来的意思更丰富的含义。一个正则表达式包含下面一个或多个项:一个字符集:这里的字符集里的字符表示的就是它们字面上的意思。锚:一个锚指明了正则表达式在一行文本中要匹配的位置。例如^和$就是锚。修饰符:它们用于展开或缩小正则表达式匹配文本行的范围。修饰符包括了星号、括号和反斜杠符号。星号:-- * -- 匹配前一个字符的任意多次(包括零次)。点:

2020-09-22 14:50:08 25

原创 高级shell编程笔记(第十七章 Here Documents)

第十七章 Here Documentshere document就是一段特殊的代码块。他使用I/O重定向的形式来将一个命令序列传递到一个交互程序或者命令中,比如ftp、cat或者ex文本编辑器。limit string 用来划定命令序列的范围(注: 两个相同的 limit string 之间就是命令序列)。特殊符号 << 用来标识 limit string。这个符号具有重定向文件的输出到程序或命令的输入的作用。与 interactive-program < command-file 很

2020-09-22 11:59:45 15

原创 高级shell编程笔记(第十六章 I/O重定向)

第十六章 I/O重定向默认情况下始终有 3 个"文件"处于打开状态,stdin (键盘)、stdout (屏幕) 和 stderr (错误消息输出到屏幕上)。这 3 个文件和其他打开的文件都可以被重定向。对于重定向简单的解释就是捕捉一个文件、命令、程序、脚本或者是脚本中的代码块(参见 Example 3-1 和 Example 3-2)的输出,然后将这些输出作为输入发送到另一个文件、命令、程序或脚本中。每个打开的文件都会被分配一个文件描述符。stdin、stdout 和 stderr 的文件描述符

2020-09-22 11:19:46 12

原创 高级shell编程笔记(第十五章 算术扩展)

第十五章 算术扩展算术扩展提供了一种强力的工具,可以在脚本中执行算法操作。可以使用backticks、double parentheses 或 let 来将字符串转换为数字表达式。使用反引号的算术扩展(通常都是和expr一起使用)[root@localhost shell]# z=`expr $z + 3`使用双括号和let形式的算术扩展反引号形式的算术扩展已经被双括号形式所替代了–((…)) 和 $((…))–当然也可以使用非常方便的let形式。[root@localhost shell]#

2020-09-22 11:04:39 14

原创 高级shell编程笔记(第十四章 命令替换)

第十四章 命令替换命令替换将会重新分配一个命令甚至是多个命令的输出;它会将命令的输出如实的添加到另一个上下文中。使用命令替换的典型形式是使用后置引用(`…`)。后置引用形式的命令将会产生命令行文本。[root@localhost shell]# script_name=`basename $0`[root@localhost shell]# echo "The name of this script is $script_name."这样的话,命令的输出可以被当成传递到另一个命令的参数,或者保存

2020-09-21 14:02:46 13

原创 高级shell编程笔记(第十三章 系统与管理命令)

第 13 章 系统与管理命令在/etc/rc.d 目录中的启动和关机脚本中包含了好多有用的(和没用的)这些系统管理命令。这些命令通常总是被 root 用户使用,用与系统维护或者是紧急文件系统修复。一定要小心使用这些工具,因为如果滥用的话,它们会损坏你的系统。Users 和 Groups 类命令users显示所有的登录的用户。这个命令与 who -q 基本一致。groups列出当前用户和他所属于的组。这相当于$GROUPS内部变量,但是这个命令将会给出组名字,还不是数字。[root@localh

2020-09-18 17:41:08 112

原创 高级shell编程笔记(第十二章 外部过滤器,程序和命令)

第十二章 外部过滤器,程序和命令标准的UNIX命令使得脚本更加灵活。通过简单的编程结构把shell指令和系统命令结合起来,这才是脚本能力的所在。12.1 基本命令新手必须掌握的初级命令ls基本的列出所有文件的命令。但是往往就是因为这个命令太简单,所以我们总是低估它。比如:-R 选项,这是递归选项,将会以目录树的形式列出所有文件-S 选项,将会按照文件大小列出所有文件-t 选项,将会按照修改时间列出所有文件-i 选项,将会显示文件的inode(见Example 12.4)Example

2020-09-16 15:59:28 173

原创 高级shell扩展---cut命令

cutcut命令用于显示每行从开头算起 num1 到 num2 的文字。参数:-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。-c :以字符为单位进行分割。-d :自定义分隔符,默认为制表符。-f :与-d一起使用,指定显示哪个区域。-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除常用的就是 -d -f实例[root@localh

2020-09-15 11:00:08 18

原创 rhel6.5 安全加固

系统安全安全很重要整理此文档时,系统环境为rhel6.5此安全加固文档并不完整,还有待补充

2020-07-30 16:38:44 103

原创 一次服务器被攻击的记录

/bin/bash –i,python -c 'import pty; pty.spawn("/bin/sh")' 可以建立ttyshell一般的木马文件都是jsp文件或者py文件当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务

2020-07-29 14:20:51 48

原创 配置pam_tally.so导致的su故障

配置pam_tally.so(口令认证失败次数)后vim /etc/pam.d/system-auth添加auth required pam_tally.so deny=5 unlock_time=600account required pam_tally.sosu命令的密码验证一直失败

2020-07-28 10:38:20 306

原创 FastDFS---单节点

安装FastDFS官方地址:https://github.com/happyfish100/安装依赖yum -y install gcc libevent下载安装 libfastcommon下载libfastcommonhttps://github.com/happyfish100/libfastcommon解压unzip master.zipcd libfastcommon-master编译、安装./make.sh./make.sh installlibfastcommon

2020-07-22 12:03:49 115

原创 高级shell扩展---updatedb和locate命令

updatedbupdatedb 命令用来创建或更新 slocate/locate 命令所必需的数据库文件。updatedb 命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入 slocate/locate 数据库文件中。注意:slocate 本身具有一个数据库,里面存放了系统中文件与目录的相关信息。语法updatedb(选项)参数-o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件;-U<目录>:更新指定目录的slo

2020-07-13 14:52:01 41

原创 shell高级编程笔记(第十一章 内部命令与内建)

第十一章 内部命令与内建内建命令指的就是包含在Bash工具集中的命令。这主要是考虑到执行效率的问题(内建命令将比外部命令执行的更快,外部命令通常需要fork出一个单独的进程来执行)。另外一部分原因是特定的内建命令需要直接存取shell内核部分。当一个命令或者是shell本身需要初始化(或创建)一个新的子进程来执行一个任务的时候,这种行为被称为forking。这个新产生的进程被叫做子进程,并且这个进程是从父进程中分离出来的。当子进程执行它的任务时,同时父进程也在运行注意:当父进程取得子进程的PID的时候

2020-07-13 14:44:38 53

原创 高级shell扩展---getopts命令

getoptsgetopts是linux系统中的一个内置变量,一般用在循环中。每当执行循环时,getopts都会检查下一个命令选项,如果这些选项出现在option中,则表示是合法选项,并将这些合法选项保存在VARIABLE这个变量中,否则不是合法选项。语法格式:getopts [option[:]] [DESCPRITION] VARIABLE option:表示为某个脚本可以使用的选项 ":":如果某个选项(option)后面出现了冒号(":"),则表示这个选项后面可以接参数

2020-07-10 16:54:34 30

原创 Nginx反向代理多个https的注意点

我刚开始按照之前的配置方法配置了httpsserver { listen 443; ssl on; server_name www.xxxxx.cn; ssl_certificate cert/4188048.pem; ssl_certificate_key cert/4188048.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout

2020-07-10 10:31:19 367

原创 高级shell扩展---tr命令

trtr 命令用于转换或删除文件中的字符。从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。语法tr [选项]…SET1[SET2] 参数说明:-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换-d, --delete:删除指令字符-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等--

2020-07-07 19:09:07 34

原创 高级shell扩展---pidof命令

pidof查找指定名称的进程的进程号ID号与ps命令相似语法:pidof(选项)(参数)选项-s:仅返回一个进程号;-c:仅显示具有相同“root”目录的进程;-x:显示由脚本开启的进程;-o:指定不显示的进程ID。参数进程名称:指定要查找的进程名称。实例[root@localhost aaa]# pidof sshd3963 1222[root@zhhs aaa]# ps -ef |grep sshd | grep -v greproot 1222

2020-07-07 18:09:16 84

原创 高级shell扩展---printf命令

printfprintf命令模仿C程序库(library)里的 printf() 程序。printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。语法:printf format-string [arguments...]参数说明:form

2020-07-07 18:06:47 40

原创 shell高级编程笔记(第十章 循环和分支)

第十章 循环和分支对代码块进行操作是有组织的结构化的shell脚本的关键。为了达到这个目的,循环和分支提供帮助。10.1 循环循环就是重复一些命令的代码块,如果条件不满足就退出循环。for 循环for arg in [list]这是一个基本的循环结构。它与C的相似结构有很大不同。for arg in [list]do commadn(s)...doneExample 10.1 循环的一个简单例子#!/bin/bash#列出所有行星for planet in 水星 金星 地球

2020-07-07 10:41:07 36

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除