shell脚本

linux-4week

岁酱吖の 提交于 2020-02-27 18:24:01
1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来 2、查出用户UID最大值的用户名、UID及shell类型 3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 4、编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果 指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等 信息 5、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等; 来源: 51CTO 作者: a754688178 链接: https://blog.51cto.com/14688684/2474030

【Python】 子进程创建与使用subprocess

余生长醉 提交于 2020-02-27 17:16:09
subprocess *****本文参考了Vamei大神的http://www.cnblogs.com/vamei/archive/2012/09/23/2698014.html    运用subprocess包可以在运行python的进程下进一步开启一个子进程,创建子进程要注意     1. 父进程是否暂停     2.创建出的子进程返回了什么     3.执行出错,即返回的code不是0的时候应该如何处理   subprocess包提供了三个开启子进程的方法,subprocess.call() , subprocess.check_call() , subprocess.check_output(),给三者传递命令字符串作为参数。可以用(['ping','www.baidu.com','-c','3'])这种列表的形式,同时也可以是("ping www.baidu.com -c 3") 这种形式。在开启子进程的时候,可以加上shell=True的参数来让python开启一个shell,通过shell来解释获得的命令。 一般在windows下运行的程序最好都把shell=True加上,这样才能顺利地执行dos命令,但是linux下似乎不加也没啥关系。因为linux下未指明用shell执行的话会调用/bin/sh来执行,问题不大,但是dos下系统不会默认用cmd.exe来执行命令

linux基础学习 004 shell与变量

青春壹個敷衍的年華 提交于 2020-02-27 12:37:19
bash shell的功能 1.命令记忆功能 (history) ~/.bash_history 2.补全命令功能[Tab] 3.命令行别名设置功能 (alias,unalias) 4.作业控制,前台,后台控制 5.程序脚本(shell script) 6.通配符 shell的变量 显示变量: 使用echo $变量名 echo $PATH 自定义变量的设置: 变量=内容; 取消自定义变量: unset $变量名 变量设置注意事项: 1.等号两边不能直接接空格符; 2.变量名,英文,数字; 3.export使自定义变量成为环境变量, export 变量名 ; 4.双引号仍可保留变量内容,单引号将是一般字符. . 环境变量相关命令: env/export //列出所有环境变量 set //查看所有变量(环境变量+自定义变量) . 变量键盘读取,数组与声明 read [-pt] variable //读取来自键盘输入的变量 -p:后面可接提示符 -t:后面接秒数 declare [-aixr] variable //声明变量类型 -a: 数组 -i: 整型,base环境下数组计算,默认最多达到整型. -x: 将variable变成环境变量,+x,相当于取消操作. -r: readonly类型.不能更改. 数组设置方法: var[index]=content echo ${var[i]}

Shell 流程控制

微笑、不失礼 提交于 2020-02-27 09:56:12
Shell 流程控制 和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else,就像这样 if else if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if else if else 语法格式: if condition then command1 command2 ... commandN else command fi if else-if else if else-if else 语法格式: if condition1 then command1 elif condition2 command2 else commandN fi for 循环 与其他编程语言类似,Shell支持for循环。 for循环一般格式为: for var in item1

jenkins(3): jenkins执行shell命令

落花浮王杯 提交于 2020-02-27 06:58:22
参考: https://www.cnblogs.com/reblue520/p/7146693.html 1. 执行 本地 shell命令或者脚本 是在一个构建中的 bulid 选项卡。 执行本地中的一个脚本 执行一个命令 2. 执行远程机器的命令或者脚本。 2.1 ssh 插件要安装好 2.2 添加一个 用于远程的证书 在jenkins首页 点击 Credentials 进入如下页面 点击System 进入页面进行 credentials的添加: 可以添加用户名密码凭证,也可添加 用户名 密钥作为凭证。当然还有其它的请根据情况自行选择. 最后出现了 名字为 root(remote_exec) 的凭证。 2.3 配置远程主机和证书的对应 Manage Jenkins --> configure system--->SSH remote hosts即行配置 也可以省略上面的 第二步, 直接在 这个页面添加credentials. 2.4 构建item 选择执行远程脚本一项。 shell-exec 是构建的项目的名称. 只有进行了上面第3 步的配置,在 SSH site下面才会有选择项目(主机选择). 最后在 项目中 点击 build now 构建项目后,执行远程命令。 来源: https://www.cnblogs.com/yitianyouyitian/p/9255098.html

shell之crontab

与世无争的帅哥 提交于 2020-02-27 01:26:54
一 crontab高级用法 Crontab 主要是在做排程, 通常一般寫法大概都是如下: 0 0 * * * /usr/local/www/awstats/cgi-bin/awstats.sh 這種寫法規則如下: 分 時 日 月 週 對應表如下: field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names) 看到 彥明 長輩寫才知道有這種寫法: @hourly /usr/local/www/awstats/cgi-bin/awstats.sh 使用 @hourly 對應的是 0 * * * *, 還有下述可以使用: string meaning ------ ------- @reboot Run once, at startup. @yearly Run once a year, "0 0 1 1 *". @annually (same as @yearly) @monthly Run once a month, "0 0 1 * *". @weekly Run once a week, "0 0 * * 0".

应急响应

China☆狼群 提交于 2020-02-27 01:16:04
什么是应急响应 PDCERF模型 P (Preparation准备) D (Detection诊断) C (Containment抑制) E (Eradication根除) R (Recovery恢复) F (follow-up跟踪) 其实就是为了快速定位问题点,快速解决问题原因 应急工具: ls, ifconfig , ps ,top busybox webshell 检查。病毒查杀 诊断:CPU 占用 -> 挖矿 阻断: 比如拔网线 根除: 黑客如何攻进来的,利用什么漏洞,在服务器中做了什么,清除后门,webshell等 恢复,监控: 应急报告 BusyBox BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。 运维人员开始top、ps等未查找到异常进程是由于该病毒涉及到 Linux动态链接库预加载机制, 是一种常用的进程隐藏方法,而系统的ls,ps等命令已被通过so库的preload机制被病毒劫持。 而busybox是静态编译的,不依赖于系统的动态链接库,从而不受ld.so.preload的劫持,能够正常操作文件。 BusyBox下载 cd /bin/ wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox chmod 755 busybox 使用: busybox top #

内网攻防经典技术备忘录

冷暖自知 提交于 2020-02-26 23:04:42
前言 很早就想专门写一篇关于内网的文章,一直没有腾出空来,万万没想到,写下这篇文章的时候,竟然是我来某实验室实习的时间段:) 信息搜集 nmap扫描实时存活的ip nmap 10.1.1.1 --open -oG scan-results; cat scan-results | grep "/open" | cut -d " " -f 2 > exposed-services-ips 常用命令 ipsping icmp连通性 nslookup www.baidu.com vps-ip dns连通性 dig @vps-ip www.baidu.com curl vps:8080 http连通性 tracert bitsadmin /transfer n http://ip/xx.exe C:\windows\temp\x.exe一种上传文件 >=2008 fuser -nv tcp 80 查看端口pid rdesktop -u username ip linux连接win远程桌面 (有可能不成功) where file win查找文件是否存在 找路径,Linux下使用命令find -name *.jsp来查找,Windows下,使用for /r c:\windows\temp\ %i in (file lsss.dmp) do @echo %i netstat -apn | grep

Shell脚本中的并发

谁都会走 提交于 2020-02-26 14:53:19
主要记录一下Shell脚本中的命令的并发和串行执行以及如何控制进程的数量。 默认的情况下,Shell脚本中的命令是串行执行的,必须等到前一条命令执行完后才执行接下来的命令,但是如果我有一大批的的命令需要执行,而且互相又没有影响的情况下(有影响的话就比较复杂了),那么就要使用命令的并发执行了。 看下面的代码: #!/bin/bash for (( i = 0 ; i < ${count} ; i ++ )) do commands1 done commands2 对于上面的代码,因为每个commands1都挺耗时的,所以打算使用并发编程,这样就可以节省大量时间了。 修改后的代码如下: #!/bin/bash for (( i = 0 ; i < ${count} ; i ++ )) do { commands1 } & done commands2 这样的话commands1就可以并行执行了。 实质是将commands1作为后台进程在执行,这样主进程就不用等待前面的命令执行完毕之后才开始执行接下来的命令。 但是我的本来目的是让commands1的这个循环都执行结束后,再用command2去处理前面的结果。如果像上面这样写的话,在commands1都还没结束时就已经开始执行commands2了,得到了错误的结果。 再次修改代码如下: #!/bin/bash for (( i = 0 ;

shell脚本学习-02 shell命令

北城以北 提交于 2020-02-26 13:38:00
shell命令 1、read命令:从键盘读入数据,赋给变量 如:read USERNAME echo ${M_VAR} 2、expr命令:对整数型变量进行算术运算 例如:expr 3 + 5 expr $var1 - 5 expr $var1 / $var2 expr $var3 \* 10 复杂的运算:expr expr 5 + 7 /$var4 将运算结果赋予变量:var4= expr $var1 / $var2 var4=$(expr expr $var1 + $var2 /$var3) 3、变量测试语句:用于测试变量是否相等、 是否为空、文件类型等。 格式:test 测试条件 测试范围:整数、字符串、文件 字符串测试: test str1=str2 测试字符串是否相等 test str1!=str2 测试字符串是否不相等 test str1 测试字符串是否不为空 test -n str1 测试字符串是否不为空 test -z str1 测试字符串是否为空 整数测试: test int1 -eq int2 测试整数是否相等 test int1 -ge int2 测试int1是否>=int2 test int1 -gt int2 测试int1是否>int2 test int1 -le int2 测试int1是否<=int2 test int1 -lt int2 测试int1是否