shell编程题(六)

题目:

打印当前sshd的端口和进程id

例如:处理结果: sshd Port&&pid: 22 5412

答案:

netstat -nltp | grep ssh |awk -F: ‘{print $2}‘| grep -v "^$"|awk ‘{print "ssh:"$1}‘

解析:

netstat -nltp

Netstat 命令用于显示各种网络相关信息,参数为:

-a (all)显示所有选项,默认不显示LISTEN相关

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字。

-l 仅列出有在 Listen (监听) 的服务状态

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如uid等

-s 按各个协议进行统计

-c 每隔一个固定时间,执行该netstat命令。

grep ssh

显示含有ssh的行

awk -F: ‘{print $2}‘

将一行数据按照 : 隔开, 第二个域里面的内容。

awk工作流程是这样的:读入有‘\n‘换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。

grep -v "^$"

作用是过滤空白符

原文地址:https://www.cnblogs.com/wanghao-boke/p/12103635.html

时间: 2024-10-12 15:13:56

shell编程题(六)的相关文章

嵌入式考试Shell编程题

单片机与嵌入式系统考试Shell编程题库,简单地做了下. 9. 与题7类似,多了个乘法运算. #!/bin/bash # test1.sh # 2016.1.2 echo "Please input N student grade:" read -a grade for ((i=0;i<${#grade[@]};i++)) do if [[ ${grade[i]} -ge 90 ]] then grade[i]=5 elif [[ ${grade[i]} -ge 80 ]] th

shell编程(六)脚本初步

shell脚本编程: 编程语言的分类:根据运行方式 编译运行:源代码 --> 编译器 (编译)--> 程序文件: 解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行: 根据其编程过程中功能的实现是调用库还是调用外部的程序文件: shell脚本编程: 利用系统上的命令及编程组件进行编程: 完整编程: 利用库或编程组件进行编程: 编程模型:过程式编程语言,面向对象的编程语言 程序=指令+数据 过程式:以指令为中心来组织代码,数据是服务于代码: 顺序执行 选择执行 循环执行 代表

Linux shell 编程(六):运算

运算 表达式 表达式包含在或(())或[]内, 算数表达式:(()) ((expression)) 这个表达式是根据算术计算的规则来计算的.相当于let expression. 条件计算表达式:[] [expression] 这是内置命令test的同义词,以[开头,以]结尾. 在表达式中可以进行进制转换:$((NUMBER#SCALE)),$((10#8)=>8 要得到计算结果,需要在表达时前面加$符号,如:$[expression],$((expression)) 区别 这两种的区别在于((e

小鸟初学Shell编程(六)变量赋值

变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使用简单的字母a,b 这类的变量名定义.因为我们写好Shell脚本实际上是要给人看的,所以我们定义好的变量,是希望变量有具体的含义,能让阅读Shell脚本人能轻松的明白. 变量的命名规则: 字母.数字.下划线 不以数字开头 变量的赋值 为变量赋值的过程,称为变量替换 Shell脚本里变量是不区分变量类

shell编程题(九)

文本分析,取出/etc/password中shell出现的次数 答案1: cat /etc/passwd | awk -F: '{if ($7!="") print $7}' | sort | uniq -c /etc/passwd 中的数据是以:隔开的 sort是将文件中的每一行作为一个单位,互相比较. 比较的原则是从首字母向后,依次按照ASCII码值进行比较,最后将它们按照升序输出. 参数: -u 去除重复行 -r 降序输出 -o 输入到原文件 (重定向只能输入到新文件) -n 按

shell编程题(十三)

题目: 编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下. 答案: #!/bin/bash for FileName in `ls -l | awk '$5>10240 {print $9}'`; do mv $FileName /tmp done ls -al /tmp 原文地址:https://www.cnblogs.com/wanghao-boke/p/12152199.html

shell编程题(十九)

题目: 设计一个Shell程序,在/userdata目录下建立50个目录,即user1-user50,并设置每个目录的权限,其中其他用户的权限为:读:文件所有者的权限为:读.写.执行:文件所有者所在组的权限为:读.执行. 答案: #!/bin/bash mkdir ./userdata if [ $? -eq 0 ]; then i=1 while [ $i -le 50 ]; do mkdir -p ./userdata/user$i chmod 754 ./userdata/user$i l

shell编程题(五十一)

题目: 显示当前系统上所有用户的shell,要求,每种shell只显示一次: 答案: cut -d: -f7 /etc/passwd | sort -u 原文地址:https://www.cnblogs.com/wanghao-boke/p/12289991.html

Shell编程(六)awk工具

1. {print} coins.txt gold 1 1986 USA American Eagle gold 1 1968 Austria Franz Josef 100 Korona silver 10 1964 USA ingot gold 1 1956 Switzeland ingot awk '{print}' coin.txt 2. {print $x}: 打印第x列 awk '{print $1}' coin.txt 用制表键对齐 原文地址:https://www.cnblogs