Linux杂记

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Linux 杂记

说明:在使用linux的过程中的一些笔记,都是别人经验的总结。因为当时写在本地,没有写摘抄自何处,所以如果有侵权的地方,请联系本人。

命令解读

jobs 命令

查看当前终端后台运行的任务

文本排序分析
cat fenxi.txt | sort | uniq -c | sort -gr  > analysis.txt

fenxi.txt是每行只有一个字符串的文本文件,先试用sort进行排序。uniq会将临近的重复的行合并,所以需要先用sort进行排序。uniq -c的作用是在每行开头增加重复次数。然后再使用sort -gr进行统计**-g根据数字排序**,-r结果倒序排列。

显示当前端口占用情况

netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号

  • -t (tcp) 仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化为数字
  • -l 仅列出在Listen(监听)的服务状态
  • -p 显示建立相关链接的程序名
例如查看 8000 端口的情况,使用以下命令:
# netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs
获取当前正在执行脚本的绝对路径
SHELL_FOLDER=$(dirname $(readlink -f "$0"))
grep 拿到错误输出匹配的部分
 sshd -v 2>&1 | grep -o 'OpenSSH_[0-9]\.[0-9]'

sshd -v 是一个错误的命令,但是错误内容中可以显示openssh的版本信息,然后使用grep 匹配字符串。 grep -o只打印出匹配的部分。

kill掉某tty终端

先使用w查看想要kill掉的终端,然后 fuser -k /dve/pts/0
因为可能不存在fuser命令,可以使用pkill -kill -t pts/2

shell脚本调试

可以使用命令 sh -v

生成一个不包含特定目录的列表

想要生成一个不包含yara目录的列表。这个列表包含目录和文件用于其他的扫描。比如包含/root/aa/bb目录,那么列表里就不能有/root/aa/bb/cc目录。他们都必须是不包含的。

yara_path=`pwd`
#找到yara所在目录的深度
depth=$(echo $yara_path | grep -o "/" | wc -l)

path=$(find / -mindepth $depth -maxdepth $depth -type d | grep -v "/proc\|/mnt\|/dev\|yara")
for file in $path
do
    echo $file >> aaa.txt
done

path2=$(find /  -maxdepth $depth -type f | grep -v "/proc\|/mnt\|/dev\|yara")
for file in $path2
do
    echo $file >> aaa.txt
done

命令行编辑快捷键
跳转到命令行行首:ctrl+a
跳转到命令行行尾:ctrl+e

shell 杂记

判断文件是否存在
#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"
# 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限
if [ ! -x "$myPath"]; then
mkdir "$myPath"
fi
 # 这里的-d 参数判断$myPath是否存在
 if [ ! -d "$myPath"]; then
 mkdir "$myPath"
 fi
 # 这里的-f参数判断$myFile是否存在
 if [ ! -f "$myFile" ]; then
 touch "$myFile"
 fi
 # 其他参数还有-n,-n是判断一个变量是否是否有值
 if [ ! -n "$myVar" ]; then
 echo "$myVar is empty"
 exit 0
 fi
 # 两个变量判断是否相等
 if [ "$var1" = "$var2" ]; then
 echo '$var1 eq $var2'
 else
 echo '$var1 not eq $var2'
 fi
-f 和-e的区别 
Conditional Logic on Files 
-a file exists. 
-b file exists and is a block special file. 
-c file exists and is a character special file. 
-d file exists and is a directory. 
-e file exists (just the same as -a). 
-f file exists and is a regular file. 
-g file exists and has its setgid(2) bit set. 
-G file exists and has the same group ID as this process. 
-k file exists and has its sticky bit set. 
-L file exists and is a symbolic link. 
-n string length is not zero. 
-o Named option is set on. 
-O file exists and is owned by the user ID of this process. 
-p file exists and is a first in, first out (FIFO) special file or 
named pipe. 
-r file exists and is readable by the current process. 
-s file exists and has a size greater than zero. 
-S file exists and is a socket. 
-t file descriptor number fildes is open and associated with a 
terminal device. 
-u file exists and has its setuid(2) bit set. 
-w file exists and is writable by the current process. 
-x file exists and is executable by the current process. 
-z string length is zero. 
shell 文件包含
. filename   # 注意点号(.)和文件名中间有一空格
或
source filename
Shell中的$0、$1、$2的含义

在shell脚本中看到的$0 是你写的shell脚本本身的名字,$1是你给你写的shell脚本传的第一个参数,$2 是你给你写的shell脚本传的第二个参数

Shell ∗和*和@的区别

$*$@ 都表示传递给函数或脚本的所有参数。当 $* 和 $@ 不被双引号" “包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。
当它们被双引号” "包含时,就会有区别了:

  • "$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
  • "$@"仍然将每个参数都看作一份数据,彼此之间是独立的。

比如传递了 5 个参数,那么对于"∗"来说,这5个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于"*"来说,这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于""5"@"来说,这 5 个参数是相互独立的,它们是 5 份数据。

${ } 的一些特殊功能: 获取文件名,获取文件目录

假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt

${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%/*/*}: 拿到的结果为 /dir1/dir2
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:
# 是去掉左边(在鉴盘上 # 在 $ 之左边)
% 是去掉右边(在鉴盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
${file#/}(不加*号)表示只去掉最左边的/

命令

awk

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。awk把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

awk中的内置变量$NF

awk中的$NF,表示字段数,在执行过程中对应于当前的字段数。
例子:

netstat -an  | grep 22
-------------------------------------------------
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 192.168.125.86:22       10.80.73.229:54425      ESTABLISHED
tcp        0     48 192.168.125.86:22       10.80.73.229:54415      ESTABLISHED
tcp        0      0 192.168.125.86:22       192.168.125.85:40346    ESTABLISHED
tcp        0      0 192.168.125.86:22       192.168.125.85:40406    ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN

netstat -an  | grep 22 | awk '{print $NF}'
-------------------------------------------------------
LISTEN
ESTABLISHED
ESTABLISHED
LISTEN
什么是影子机制,使用john破解kali linux密码 linux中的 /etc/passwd文件存储敏感信息,其中包括密码,密码显示为哈希加密后的密文,root和普通用户均可获取。由于加密算法公开,易被破解(例如使用john工具),所以linux使用了一种影子机制,将密文转移到 /etc/shadow 中,在 /etc/passwd 中仅显示x。而 /etc/shadow 文件仅root用户可读取,增强了安全性。john是kali自带的基于字典的破解系统密码的工具,它支持不同的系统架构,用于在已知密文的情况下解出密码明文。2、使用john破解密码。 阅读详情

相关推荐

john Linux密码暴力破解Win版本

John the Ripper是一款免费、开源的暴力密码破解器,它有多平台版本,支持目前大多数的加密算法,如DES、MD4、MD5等。这款工具就像它的名字一样,更为直接且崇尚蛮力,其破解过程完全取决于用户,即只要给它时间,它总会给你一个好的结果。

使用john破解linux密码

使用john破解linux密码

wty923的博客 2630

john常用命令

john常用命令 john 是一款大受欢迎的、免费的开源软件、基于字典的密码破解工具。用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如 DES 、 MD4 、 MD5 等。 John 支持字典破解方式和暴力破解方式。它支持多种不同类型的系统架构,包括 Unix 、 Linux 、 Windows 、 DOS 模式、 BeOS 和 OpenVMS ,主要目的是破解不够牢固的 Unix/Linux 系统密码。 在对 john 输入命令时,命令行方式是 :john – 功能选项

YUKIDDDD的博客 5594

John the Ripper 安装

简介    John the Ripper免费的开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。 安装 系统Debian 4.3.3 ...

Romanticduan的博客 3万+

Linux提权--John碰撞密码提权

John the Ripper(简称 John)是一个常用的密码破解工具,可以通过暴力破解、字典攻击、规则攻击等方式,尝试猜解用户密码。密码的弱度是提权攻击中的一个重要因素,如果某个用户的密码非常简单或是默认密码,攻击者就可以利用密码破解工具轻松提取出密码,进而获得该用户的权限,甚至是 root 权限。

qq_37107430的博客 815

linux学习杂记

linux学习杂记

hehangkakou的博客 308

linux杂记

LINUX 使用技巧杂记@

aaaaa_2的博客 353

Linux配置杂记

linux配置杂记

weixin_42599219的博客 945

Linux 杂记

Linux命令行与图形界面进行切换 1.实时切换 1.1命令行->图形 startx 1.2图形->命令行 Ctrl+Alt+F1--F6 2.启动默认 2.1启动进入命令行 修改/etc/inittab文件 "id:3:initdefault" 2.2启动进入图形界面 修改/etc/inittab文件 "...

asdf910101的博客 348

linux命令杂记

linux命令之磁盘篇前言查看磁盘使用情况命令查询大文件的命令 前言 这是一篇关于linux的磁盘命令的杂记,后续还会不断更新(我的操作环境是基于自己搭建的ubuntu20.04桌面系统,也是我自己开发办公的主力机)。 查看磁盘使用情况命令 统一每个目录下磁盘的整体情况 命令: df -h 结果: 查看指定的目录 命令:df -h /home/ 结果: 查看当前目录每个文件夹的情况 命令:du --max-depth=1 -h 结果: 查看指定目录每个文件夹的情况 命令:du --max-depth=

一个有信仰的技术人 1210

linux编程杂记

linux系统编程中一些杂记。重新整理下 参考到以下的博客: 多线程和多进程的区别(小结)_猫已经找不回了的博客-CSDN博客_多线程和多进程 一、进程与线程的区别 1.多进程和多线程的区别,前者开销大,后者开销较小。确实,这就是最基本的区别。 2.线程函数的可重入性: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈和寄存器。因此,对于同一进程的不同线程来说,每个线程的局部变量都是私有的,而全局变量、局

lailaiquququ11的博客 757
上一篇: 关于DNS的思考
下一篇: Docker笔记
Tri0mphe
博客等级 码龄10年 16粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值