Linux运维高频用途脚本和命令行,持续更新......

文章是临时想到所写,尚不完善,后续会在工作中继续完善,同时欢迎各位朋友补充还有那些高频用途的,脚本或命令行已经实测可以使用,直接复制修改相关参数即可用,大家多多留言,多多交流,一起完善

1. 获取服务器IP地址

以下命令均获取IPV4地址,除指定网卡外,均输出主机所有ip地址,所以还需根据命令结果获取自己需要的IP

使用hostname命令 ; -I参数会列出主机所有ip,输出结果都是固定的;

hostname -I        ##由于输出结果是固定的,所以可以使用awk获取指定列ip,如
hostname -I     |awk '{print $1}'

使用IP命令,获取所有网卡地址:

ip -o -4 addr list | awk '{print $4}' | cut -d/ -f1   ##将所有网卡按行输出,可结合sed输出需要的行,如
ip -o -4 addr list | awk '{print $4}' | cut -d/ -f1 |sed -n 1p

使用ifconfig命令获取所有网卡信息

ifconfig | grep 'inet ' | awk '{print $2}' | sed 's/addr://'  #inet后面有空格,排除了ipv6##所有网卡按行输出,可结合sed输出需要的行,如
ifconfig | grep 'inet ' | awk '{print $2}' | sed 's/addr://' |sed -n "1p"

2.获取随机字符串

使用openssl

#!/bin/bash
# 生成一个n字节的随机字符串
random_string=$(openssl rand -base64 12)
echo $random_string##在这个示例中,openssl rand -base64 12 生成一个 12 字节的随机数据,并用 Base64 编码,使最终字符串长度大约为 16 个字符n=6  生成一个8位数的随机字符串
n=9  生成一个12位数的随机字符串
n=12 生成一个16位数的随机字符串

使用/dev/urandom

#!/bin/bash
# 生成一个8个字符的随机字符串
random_string=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8)
echo $random_string## 在这个示例中,head /dev/urandom 读取随机数据,tr -dc A-Za-z0-9 删除所有非字母数字字符,然后 head -c 8 截取前 8 个字符。##如果需要添加特殊符号:
random_string=$(head /dev/urandom | tr -dc A-Za-z0-9,.?_/* | head -c 8)

使用base64

#!/bin/bash
# 生成一个10位字符的随机字符串
random_string=$(base64 /dev/urandom | head -c 10)
echo $random_string#在这个示例中,base64 /dev/urandom 对随机数据进行 Base64 编码,然后 head -c 10 截取前 10 个字符。

根据自己的需求选择合适方法

  • openssl:适用于需要高质量随机数且系统安装openssl;
  • /dev/urandom:使用于需要高质量随机数且无外部依赖场景;
  • base64:适用于生成较短的随机字符串

3.批量创建用户,并生成随机密码

定义要创建的用户列表

#!/bin/bash# 定义要创建的用户列表(可以从文件中读取或直接在脚本中定义)
usernames=("testuser1""testuser2""testuser3"
)# 输出文件
output_file="user_credentials.txt"#清空输出文件
>user_credentials.txt# 生成随机密码的函数
generate_random_password() {openssl rand -base64 9
}# 遍历每个用户
for username in "${usernames[@]}"; 
dopassword=$(generate_random_password)# 创建用户并设置密码useradd -m  -d /home/"$username" -s /bin/bash  "$username" echo "$username:$password" | chpasswd# 检查用户是否创建成功if id "$username" &>/dev/null; thenecho "User $username created successfully."echo "$username:$password" >> "$output_file"elseecho "Failed to create user $username."fi
doneecho "All users created. Credentials saved in $output_file."
定义要创建的用户文件
#!/bin/bash

定义用户名列表文件

username_list_file="usernames.txt"# 输出文件
output_file="user_credentials.txt"# 检查用户名列表文件是否存在
if [ ! -f "$username_list_file" ]; thenecho "Username list file not found!"exit 1
fi# 清空输出文件
> "$output_file"# 生成随机密码的函数
generate_random_password() {openssl rand -base64 9
}# 读取用户名列表文件并遍历每个用户
while  read -r username
dopassword=$(generate_random_password)# 创建用户并设置密码useradd -m -d /home/${username} -s /bin/bash "$username"echo  "$username:$password" |  chpasswd# 检查用户是否创建成功if id "$username" &>/dev/null; thenecho "User $username created successfully."echo "$username:$password" >> "$output_file"elseecho "Failed to create user $username."fi
done < "$username_list_file"echo "All users created. Credentials saved in $output_file."

4.批量安装软件包

ubuntu:

#!/bin/bash
# 更新包列表sudo apt-get update
# 要安装的软件包列表
packages=("curl""wget""vim""git""htop"
)
# 遍历并安装每个软件包
for package in "${packages[@]}"
doecho "Installing $package..."sudo apt install -y "$package"
done

CentOS

#!/bin/bash
# 更新包列表
sudo yum update -y
# 要安装的软件包列表
packages=("curl""wget""vim""git""htop"
)
# 遍历并安装每个软件包
for package in "${packages[@]}"
doecho "Installing $package..."sudo yum install -y "$package"
done

5.expect免交互登录服务器添加公钥

vim  add_key.exp
#!/usr/bin/expect
# 配置参数
set timeout 20
set username "your_username"
set password "your_password"
set hostname "your.server.com"
set public_key_file "/xxx/.ssh/id_rsa.pub"
set remote_authorized_keys "~/.ssh/authorized_keys"
# 获取本地的公钥内容
set public_key [exec cat $public_key_file]
# 启动 SSH 会话
spawn ssh $username@$hostname
# 处理 SSH 初次连接提示(如有)
expect {"yes/no" { send "yes\r"; exp_continue }"assword:" { send "$password\r" }
}
# 创建 .ssh 目录并设置权限
expect "$ " { send "mkdir -p ~/.ssh && chmod 700 ~/.ssh\r" }
# 将公钥追加到 authorized_keys
expect "$ " { send "echo '$public_key' >> $remote_authorized_keys && chmod 600 $remote_authorized_keys\r" }
# 退出
expect "$ " { send "exit\r" }
# 完成
expect eofchmod +x add_key.exp./add_key.exp

注意事项:

  • 脚本是使用expect,不能使用bash 执行;
  • 执行脚本需要+x权限

6.文件查找find

查找特定名称的文件

find  /path/xxx  -name  "filename"eg.
find  /tmp  -name  "test.txt"    ##在/tmp目录下查找名为test.txt

查找特定模式的文件

find /path/xx -name "*.log"    ##使用通配符可匹配多个find /path/xx -iname "filename"  ##忽略大小写find /path/x -type d -name "dirname"  ##按指定类型查找d是目录,f是文件,l是软连接find /path/x -mtime -7    ##查找最近7天内修改的文件find /path/x -mtime +30    ##查找超过 30 天未修改的文件find /path/x  -atime -7  ##查找最近 7 天内访问的文件find /path/x -size +100M   ##查找大于100M的文件find /path/x -size -100k   ##查找小于于100k的文件

结合其他命令使用

find /path/xx  -name "*.log" -type f -delete    ##查找指定目录下所有.logw文件删除find /path/xx -name "*.log" -type f -exec ls -lh {} \;   ##查找并显示指定录下.log文件的详细信息

结合xargs并行处理

find /path/xxx -name "*.log" -type f | xargs -P 5 -I {} rm -rf {}     ##查找指定路径下.log文件,并行删除-P 5:并行执行 5 个进程。
-I {}:将 {} 替换为从 find 命令中读取的每个文件名。

结合Parallel并行处理

需要先安装parallel工具

apt-get install parallelfind /path/xx -name "*.log" -type f | parallel -j 4 rm -rf  {}  ##查找指定路径下.log文件,并行删除-j 4:并行执行 4 个进程。

7.date时间的格式输出,常用语文件备份后缀

自定义格式化输出日期和时间:

date +"%Y-%m-%d %H:%M:%S"
2024-07-30 18:56:00

仅输出当前年份、月份和日期:

date +"%Y-%m-%d"
2024-07-30

输出当前时间(24小时制):

date +"%H:%M:%S"
18:30:00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386843.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navidrome音乐服务器 + 音流APP = 释放你的手机空间

20240727 By wdhuag 目录 前言&#xff1a; 参考&#xff1a; Navidrome音乐服务器 Demo试用&#xff1a; 支持多平台&#xff1a; 下载&#xff1a; 修改配置&#xff1a; 设置用NSSM成服务启动&#xff1a; 服务器本地访问网址&#xff1a; 音流 歌词封面API&am…

HTML+CSS+JavaScript实现烟花绽放的效果源码

源码 复制粘贴代码 在同级别下放一张图片fire.png接可以了 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议&#xff0c;并完成了初稿。 本周继续修改论文&#xff0…

【Qt】QLCDNumberQProgressBarQCalendarWidget

目录 QLCDNumber 倒计时小程序 相关属性 QProgressBar 进度条小程序 相关设置 QLCDNumber QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值&#xff0c;例如时钟、计时器、计数器等 常用属性 属性说明intValueQLCDNumber显示的初始值(int类型)va…

Hbase简介和快速入门

一 Hbase简介 1 HBase定义 Apache HBase™ 是以hdfs为数据存储的&#xff0c;一种分布式、可扩展的NoSQL数据库。 2 HBase数据模型 HBase的设计理念依据Google的BigTable论文&#xff0c;论文中对于数据模型的首句介绍。Bigtable 是一个稀疏的、分布式的、持久的多维排序map…

【JAVA学习笔记】找不到依赖项 ‘org.springframework.boot:spring-boot-starter-web:3.0.5‘

如果环境都是跟着教程配的话&#xff0c;并且上网搜了一圈询问gpt都没发现对应长得像的错误&#xff0c;那么试试刷新一下Maven项目&#xff0c;可能问题就自己解决了。如果这样解决不了再查到底是什么地方没有配置对。 &#xff08;我第一次遇到这个问题的时候搜了半天都不知…

【ROS 最简单教程 002/300】ROS 集成开发环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

【Windows】Mountain Duck(FTP服务器管理工具)软件介绍

软件介绍 Mountain Duck是一款基于Cyberduck开发的应用程序&#xff0c;它允许用户通过FTP、SFTP、WebDAV、S3和OpenStack Swift等协议连接到云存储和远程服务器&#xff0c;并在本地文件浏览器中以熟悉的方式访问和管理这些文件。 功能特点 支持多种协议: Mountain Duck支持…

Unity和WebGL交互-2024/7/30

进入项目 1 新建一个.jslib的文件 2 放到项目内Plugins文件夹下 3 可以用vscode之类的编译器打开这个文件 编写内容 mergeInto(LibraryManager.library, {// 方法名必须和c#中的相同// 有参数 需要用UTF8ToString&#xff08;&#xff09;OnInitSDK:function(str) {window.OnIn…

vue自写组件可输入,可下拉选择,因为el-autocomplete数据多了会卡

<!-- 引入组件 --><AutoCompletev-model"scope.row.strreceivername":lngemployeeid"scope.row.lngreceiverid"select"handleSelect($event,scope.row)"/> methods:{handleSelect(item, row) {row.lngreceiverid item.lngemployeei…

项目实战——外挂开发(30小时精通C++和外挂实战)

项目实战——外挂开发&#xff08;30小时精通C和外挂实战&#xff09; 外挂开发1-监控游戏外挂开发2-秒杀僵尸外挂开发3-阳光地址分析外挂开发4-模拟阳光外挂开发5-无限阳光 外挂开发1-监控游戏 外挂的本质 有两种方式 1&#xff0c;修改内存中的数据 2&#xff0c;更改内存中…

从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构 Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展&#xff0c;Web架构也在不断演进。当前&#xff0c;最常用的Web架构包括以下几种&#xff1a; 单页面应用&#xff08;SPA&#xff09;&#xff1a; 特点&#xff1a;所有用户界面逻辑和数据处理都包含…

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作者&#xff1a;王恩策、徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台&#xff0c;基于字节跳动数据平台多年的“数据…

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些 cookiesessionurl重写隐藏inputip地址 JS基本数据类型 String&#xff1a;用于表示文本数据。Number&#xff1a;用于表示数值&#xff0c;包括整数和浮点数。BigInt&#xff1a;用于表示任意精度的整数。Boolean&#xff1a;用于表示逻辑值…

认证授权概述和SpringSecurity安全框架快速入门

1. 认证授权的概述 1.1 什么是认证 进入移动互联网时代&#xff0c;大家每天都在刷手机&#xff0c;常用的软件有微信、支付宝、头条、抖音等 以微信为例说明认证的相关基本概念。在初次使用微信前需要注册成为微信用户&#xff0c;然后输入账号和密码即可登录微信&#xff0c…

git 推送时出现错误 Locking support detected on remote “origin“

背景&#xff1a;代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番&#xff0c;其中有人提到可能时服务器磁盘满了&#xff0c;连到服务器上 df -h 查看&#xff0c; 发现根目录已经写满了&#xff1a; 使用命令行&#xff1a; d…

scipy.fft.fft函数与scipy.fft.rfft函数的异同

import numpy as np from scipy import signal import matplotlib.pyplot as plt思路&#xff1a;1&#xff09;先利用fft计算得出其幅频值2&#xff09;在利用rfft计算得出其幅频值&#xff0c;看1&#xff09;和2&#xff09;那个能还原出信号的原始幅值# 生成一个示例信号 n…

c#实际开发长到的知识

基础科普: 个人建议先把rotion的库导入进来再操作,具体需要导入的库有,helper库包含了modbus通讯封装好的模块,而mvvm则可以用来做设计mvvm模块,你可以使用里面封装好的实现方法,用起来特别简单更容易实现其中的操作,但是我担心那天被卡脖子了啊啊啊,要是我罗工把库下…

【CTFHub】文件上传漏洞详解!

Webshell&#xff1a; 又称一句话木马。WebShell就是以网页文件形式存在的一种代码执行环境&#xff0c;主要用于网站管理、服务器管理、权限管理等操作。 WebShell根据不同的语言分为:ASP木马、PHP木马、JSP木马(上传解析类型取决于网站服务端编写语言类)&#xff0c;该类木马…

(二)延时任务篇——通过redis的key监听,实现延迟任务实战

前言 本节内容是关于使用redis的过期key&#xff0c;通过开启其监听失效策略&#xff0c;模拟订单延迟任务的执行流程。其核心原理是通过使用redis订阅与发布的方式&#xff0c;将过期失效的key通过广播的方式&#xff0c;发布给客户端&#xff0c;客户端可以监听此消息进而消…