Kali Linux Task 4

连祈
2022-04-20 / 0 评论 / 17 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年04月23日,已超过1091天没有更新,若内容或图片失效,请留言反馈。

一些常用的命令
l27czht3.png

操作者与计算机之间的接口可以称作shell(图形化shell和字符化shell)

Bash


ls
  蓝色表示目录、红色表示压缩包、绿色表示可执行文件、白色表示普通文件

ls -l
第一列-分为前一个字符和后九个字符,第一个字符代表文件、链接、普通文件(c:文件设备、l:链接、d:目录文件、b:块设备)
可显示文件链接的个数,一般是第二列数字。

ls -a
Linux下以“.”字符为起始的文件都是隐藏文件,-a显示所有文件

ls -h
h->human人类便于阅读的格式显示文件大小。

ls --sort=size(ls --sort=time)
以文件大小、时间排序


cd
"."   当前目录
".."  上一级目录
"~"   用户主目录


cat、more、less、tail(查看文件的命令)
  /var/log/messages     (记录系统变化的日志文件)

more /var/log/messages
从头开始显示文件,当终端屏幕满时停止输出,回车进入下一页。

less /var/log/messages
less不会显示阅读百分比,其他与more一致
 
tail -20 /var/log/messages(显示最后20行的内容)
tail文件从后往前显示


watch
watch -n “number”
每隔number秒重新执行一次命令,进行刷新。

tail经常与watch一同使用


rm
删除文件
rm -r  (递归)
删除目录


cp
拷贝文件
cp -r(递归)
拷贝目录


top
监视linux系统性能与进程。还可对进程进行操作。
(每行)
1、操作系统当前时间、操作系统启动时间,有几个用户正在登陆,平均负载。
2、当前系统的进程,进程状态
3、cpu性能信息。
4、内存信息
5、swap交换区信息。
6、当前系统进程信息

还可对进程进行操作:直接输入kill PID
q键退出


ps
专门用来查看进程信息
ps -ef
UID、PID、PPID(父进程)、TTY(哪个终端开始的)、时间、进程调用的程序路径

ps aux
与-ef现实的项目相同,但信息列不同


grep
筛选输出内容的命令
grep “要查找的字符串” 文本文件路径
egrep -v  “'0.0.0.0|:::'”  (命令需要带单引号)
egrep -v  “'and|Address'”
egrep与grep相同是升级版。
-v参数相当于!,过滤掉(不显示)含有参数后的字符串
其中“|”链接两个需要过滤的字符串,一行命令同时过滤两个字符串


ifconfig
查看网络信息
ifconfig eth0(网卡名称)down
关闭指定网卡链接-之后ifconfig看不到了,(关闭后可修改mac地址)
macchanger -m 00:00:00:00:00:00 eth0(修改mac地址,重启后mac地址会变回初始的mac地址)
修改mac地址
ifconfig eth0 up


netstat
查看网络连接信息
netstat -pantu
查看计算机与哪些服务器产生了tcp、udp链接
/etc/resolv.conf(dns配置文件)


awk
输出指定列的内容信息(对每行内容进行分块,默认分块方式为空格)
awk “‘{print $5}’”
输出每行中第五列的内容
-F参数也可达到分块功能:awk -F : '{print $1}'
(上一行命令表示 使用awk命令用-F参数以':'进行分块,并输出第一块的内容)


cut
对每一行的内容进行分块,可指定分块字符
cut -d ':' -f 1
-d使用‘:’进行分块,-f选择第一列


sort
排序


uniq
去重(unique)


'>'  管道符号输出(覆盖)
将命令运行结果输出到其他地方,如果输出目标已存在,则会覆盖已存在的信息
ls > test.txt
将ls的运行结果输出到test.txt

'>>'  管道符号输出(附加)
将命令运行结果输出到其他地方,如果输出目标已存在,则会在已存在的信息后方附加新的信息


mount
挂载文件夹、目录
直接输入可看到系统已挂载的目录
挂载iso映像文件


dmesg
查看日志文件(等同于tail)


find
逐个子目录逐层查找文件/目录
find / -name nmap
在根目录下查找nmap
find / -iname nmap
-iname大小写不敏感,不区分大小写
find / -iname nmap -exec cp {} /tmp/{}.bak \ ;
-exec在find结束后执行命令,执行cp,但不会对隐藏目录下(隐藏文件)进行操作
\ ;作为结束符号表示命令终止


whereis
查找速度比find快,但是不全
通过包管理器安装到linux的软件包生成的文件都会在本地生成数据库,whereis只在这个数据库内搜索文件。
whereis -b nmap
-b查找二进制文件
whereis在使用之前可以用updatedb命令更新一下数据库


echo
在当前终端显示信息
echo “hello world”


wc
wc -L
计算字符串的长度


vi
不用我说了吧
vi ip
编辑指定文件
刚进入时为命令输入模式,输入冒号“:”,后接命令(大小写敏感)
:set nu
显示当前行号
:wq
保存退出
i
插入模式输入,按esc键退出
a
增加模式
dd(不确定有没有冒号)
删除整行
o
在当前光标下方增加一行
y
复制当前行
p
粘贴所复制的行


管道
"|"
">"
">>"
以上管道上文介绍过
"&"
&前后两个命令依次执行,即便第一个命令报错,后面的命令也会执行
"&&"
如果前面的命令执行成功,才会执行后面的命令
"||"
如果前面的命令执行不成功,才执行后面的命令


shell脚本
vi 1.sh

#! /bin/bash
#脚本默认的起始行,下边所有的内容都使用/bin/bash进行解释
echo -n "ip:"
#-n参数表示echo在输出字符串后不换行
read ip
#该函数读入用户输入的字符串,并定义、赋值变量ip
echo "your ip is : "  $ip
#引号中间原封不同的显示。$后跟变量,输出变量的值

chmod +x 1.sh
ls -l
./1.sh

"$()"与" `` "等价(esc下方的顿号)

#!/bin/bash
for n in $(seq 9)
# "$()"与" `` "等价
#seq 9  从1到9的序列,需要有单引号,n是一个变量,从1-9逐次取值,之后去做do的内容
# '$()'表示一个变量
do

for m in $(seq $n)
do
echo -n "$m*$n=" $(($m*$n)) "  "
#$(($m*$n))表示两数相乘,需要有两层括号
 
done
#注意代码开头不要有空格,和python不一样
echo
#输出一个换行
done
 
 

在bash脚本的数学运算中
方法一:expr $num1 operator $num2
方法二:$(( $num1 operator $num2 ))
expr操作符对照表
num1 | num2 :num1不为空且非0,返回num1;否则返回num2
num1 & num2 :num1不为空且非0,返回num1;否则返回0
num1 < num2 :num1小于num2,返回1;否则返回0
num1 <= num2 :num1小于等于num2,返回1;否则返回0
num1 > num2 :num1大于num2,返回1;否则返回0
num1 >= num2 :num1大于等于num2,返回1;否则返回0
num1 = num2 :num1等于num2,返回1;否则返回0
num1 != num2 :num1不等于num2,返回1;否则返回0
num1 + num2 :求和
num1 - num2 :求差
num1 * num2 :求积
num1 / num2 :求商
num1 % num2 :求余

#! /bin/bash
for n in $(seq 254)
do
ping 192.168.1.$n -c 1 | grep ttl | awk '{print $4}' | awk -F '{print $1}'
done

#! /bin/bash
A=`cat ip`
#定义变量A
for B in $A
#B变量每次从变量A中读取一行
do
n=`echo $B | wc -L ` 
#输出循环当前行的字符串长度并赋值给n
if [ $n -gt 6 ] ; then  
#注意[]中括号对空格敏感,[1 -gt 0] 会报错,正确写法应为 [ 1 -gt 0 ] 即每个中括号两侧都应该有空格 
#最稳妥的方式是中括号、小括号前后都带空格
# -gt 大于,如果一行大于6个字符则执行
ip=$B
else
port=$B
nmap -p$port -sV $ip | grep -v Starting | grep -v Host | grep -v PORT | grep -v Service | grep -v done >> r1
fi
done
在shell中,"-gt"或者"-lt"只能用于比较两个数字的大小,
当我们想要比较两个字符的ASCII值时,则必须使用">"或者"<",
而且需要注意,当使用"双中括号" [ [ ] ] 进行判断时,">"或者"<"不用转义即可正常使用,
当使用"单中括号" [ ] 进行判断时,">"或者"<"需要转义后才能正常使用。
0

评论 (0)

取消