常用脚本记录

news2024/9/21 12:40:13

文章目录

    • 1. shell脚本
      • 1.1 backup.sh // 目录备份(数据备份)
      • 1.2 check_ip.sh // 检查ip
      • 1.3 FlotMonitor.sh // 流量监控
      • 1.4 ssh_NoPasswd.sh // 集群免密
    • 2. python脚本
      • 2.1 游戏脚本
        • 2.1.1 saolei.py // 扫雷(python3)
        • 2.1.2 Guessnum.py // 猜数字(python3)
        • 2.1.3 DodgeBall.py // 躲避障碍物

1. shell脚本

1.1 backup.sh // 目录备份(数据备份)

该脚本将/data目录备份到/backup目录下,并以当前时间为文件名进行压缩。同时,该脚本会删除7天前的备份文件。可以使用crontab命令将该脚本设置为定时任务,例如每天凌晨3点执行一次备份:
0 3 * * * /xx/xx/backup_script.sh

#!/bin/bash

# 定义备份目录和备份文件名
backup_dir="/backup"
backup_file="data_backup_$(date +%Y%m%d%H%M%S).tar.gz"

# 定义要备份的目录
backup_source="/data"

# 创建备份目录
if [ -d $backup_dir ]; then
  echo "存在目录$backup_dir"
else
  mkdir -p $backup_dir
fi

# 执行备份
tar -czf $backup_dir/$backup_file $backup_source 2>/dev/null

# 删除7天前的备份文件
find $backup_dir -name "data_backup_*" -type f -mtime +7 -exec rm {} \;

1.2 check_ip.sh // 检查ip

for i in `cat ip`
do
    if ping -c 1 $i &>/dev/null; then
        echo -n $i && echo -e \\t "\033[32m connect success \033[0m"
    else
        echo -n $i && echo -e \\t "\033[31m connect failed \033[0m"
    fi
done

1.3 FlotMonitor.sh // 流量监控

该脚本使用 ifconfig 命令获取 eth0 网络接口的接收和发送流量,并将其转换为千字节(KB)。然后,该脚本输出当前时间和接收/发送流量,并等待指定时间后再次获取流量数据。

#!/bin/bash

# 设置监控间隔(秒)
INTERVAL=5

while true
do
 # 获取当前时间
 now=$(date +"%T")

 # 使用 ifconfig 命令获取 eth0 网络接口的接收和发送流量
 rx=$(ifconfig eth0 | grep 'RX packets' | awk '{print $5}')
 tx=$(ifconfig eth0 | grep 'TX packets' | awk '{print $5}')

 # 将字节转换成千字节
 rxk=$(echo "scale=2;$rx/1024"|bc)
 txk=$(echo "scale=2;$tx/1024"|bc)

 # 输出当前时间和接收/发送流量
 echo "$now RX: $rxk KB/s TX: $txk KB/s"

 # 等待指定时间
 sleep $INTERVAL
done

1.4 ssh_NoPasswd.sh // 集群免密

#!/bin/bash

SSH='/root/.ssh'

if [ ! -d $SSH ];then
    mkdir -p $SSH
    chmod 700 $SSH
fi

if [ ! -e $SSH/id_rsa.pub ];then
    ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ''
fi

if [ -f $SSH/authorized_keys ];then
    cat $SSH/id_rsa.pub >> $SSH/authorized_keys
else
    touch $SSH/authorized_keys
    chmod 600 $SSH/authorized_keys
    cat $SSH/id_rsa.pub >> $SSH/authorized_keys
fi

if [ ! -e cluster_ip ];then
    curl xxx >> /root/cluster_ip
else
    for i in cluster_ip
    do
        sshpass -pxxx ssh-copy-id -i /root/.ssh/authorized_keys -f -p22 $i
    done
fi

2. python脚本

2.1 游戏脚本

2.1.1 saolei.py // 扫雷(python3)

import random

class Minesweeper:
    def __init__(self, width, height, num_mines):
        self.width = width
        self.height = height
        self.num_mines = num_mines
        self.board = [[0 for x in range(width)] for y in range(height)]
        self.visible = [[False for x in range(width)] for y in range(height)]
        self.game_over = False

        #布雷
        mines = random.sample(range(width*height), num_mines)
        for i in mines:
            row = i // width
            col = i % width
            self.board[row][col] = '*'
            for r in range(row-1, row+2):
                for c in range(col-1, col+2):
                    if (r >= 0 and r < height and c >= 0 and c < width and self.board[r][c] != '*'):
                        self.board[r][c] += 1

    #打印棋盘
    def __str__(self):
        result = ''
        for row in range(self.height):
            for col in range(self.width):
                if (self.game_over or self.visible[row][col]):
                    result += str(self.board[row][col]) + ' '
                else:
                    result += '- '
            result += '\n'
        return result

    #翻开格子
    def reveal(self, row, col):
        if (self.board[row][col] == '*'):
            self.game_over = True
        elif (self.visible[row][col] == False):
            self.visible[row][col] = True
            if (self.board[row][col] == 0):
                for r in range(row-1, row+2):
                    for c in range(col-1, col+2):
                        if (r >= 0 and r < self.height and c >= 0 and c < self.width):
                            self.reveal(r, c)

    #判断游戏是否结束
    def is_game_over(self):
        return self.game_over or self.is_game_won()

    #判断游戏是否胜利
    def is_game_won(self):
        for row in range(self.height):
            for col in range(self.width):
                if (self.board[row][col] != '*' and self.visible[row][col] == False):
                    return False
        return True

#测试代码
game = Minesweeper(8, 8, 10)

while (not game.is_game_over()):
    print(game)
    row = int(input('Enter 横坐标: '))
    col = int(input('Enter 纵坐标: '))
    game.reveal(row, col)

print(game)

if (game.is_game_won()):
    print('You won!')
else:
    print('Game over!')

在这里插入图片描述

2.1.2 Guessnum.py // 猜数字(python3)

import random

def guess_number():
    number = random.randint(1, 100)
    guess = int(input("猜一个1-100之间的数字:"))
    tries = 1

    while guess != number:
        if guess > number:
            print("太大了,请再试一次。")
        else:
            print("太小了,请再试一次。")
        guess = int(input("再猜一个数字:"))
        tries += 1

    print("恭喜,你猜对了!你用了 %d 次猜中了数字 %d。" % (tries, number))

guess_number()

2.1.3 DodgeBall.py // 躲避障碍物

import pygame
import random
import sys

# 初始化Pygame
pygame.init()

# 设置游戏窗口大小
size = (800, 600)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("小球躲避障碍物")

# 定义颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)

# 定义小球
class Ball():
    def __init__(self, x, y, radius, color):
        self.x = x
        self.y = y
        self.radius = radius
        self.color = color

    def draw(self):
        pygame.draw.circle(screen, self.color, (self.x, self.y), self.radius)

# 定义障碍物
class Obstacle():
    def __init__(self, x, y, width, height, color):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.color = color
        self.speed = 5

    def draw(self):
        pygame.draw.rect(screen, self.color, [self.x, self.y, self.width, self.height])

    def move(self):
        self.x -= self.speed

# 创建小球和障碍物的实例
ball = Ball(100, 300, 20, red)
obstacles = []

# 游戏循环
game_over = False
score = 0
font = pygame.font.SysFont(None, 30)

while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True

        # 控制小球
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                ball.y -= 10
            elif event.key == pygame.K_DOWN:
                ball.y += 10

    # 添加障碍物
    if len(obstacles) < 10:
        x = random.randint(800, 1600)
        y = random.randint(0, 600)
        width = random.randint(20, 50)
        height = random.randint(50, 200)
        color = white
        obstacle = Obstacle(x, y, width, height, color)
        obstacles.append(obstacle)

    # 绘制背景
    screen.fill(black)

    # 绘制小球
    ball.draw()

    # 绘制障碍物
    for obstacle in obstacles:
        obstacle.draw()
        obstacle.move()
        # 判断小球是否撞到障碍物
        if ball.x + ball.radius > obstacle.x and ball.x - ball.radius < obstacle.x + obstacle.width and ball.y + ball.radius > obstacle.y and ball.y - ball.radius < obstacle.y + obstacle.height:
            game_over = True

        # 判断障碍物是否超出屏幕
        if obstacle.x < -obstacle.width:
            obstacles.remove(obstacle)
            score += 1

    # 显示得分
    text = font.render("得分:" + str(score), True, white)
    screen.blit(text, (10, 10))

    # 更新屏幕
    pygame.display.update()

# 退出Pygame
pygame.quit()
sys.exit()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos7 部署单机 Minio 对象存储服务

MinIO 是一款基于 Go 语言发开的高性能、分布式的对象存储系统&#xff0c;客户端支持 Java&#xff0c;Net&#xff0c;Python&#xff0c;Javacript&#xff0c;Golang语言。 MinIO 的主要目标是作为私有云对象存储的标准方案&#xff0c;非常适合于存储大容量非结构化的数据…

基于AT89C51单片机的简易计算机设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87715642?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 本设计是以单片机AT89C51为核心的简易计算器设计&#xff0c;要通过芯片AT89C51实现计算器程序…

Vue核心 计算属性 侦听属性

1.9.计算属性 1.插值语法实现 <!DOCTYPE html> <head><meta charset"UTF-8"><title>姓名案例_插值语法实现</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js"></script…

linux部署jdk\redis\nginx\fastdfs

一、jdk安装及配置修改 1、本地下载jdk包 jdk-8u131-linux-x64.tar.gz&#xff0c;上传到服务器&#xff08;也可通过命令直接下载&#xff09; 2、将压缩包放服务器/usr/local路径下&#xff0c;后解压&#xff1a;tar -zxvf jdk-8u131-linux-x64.tar.gz 如之前已安装&…

OSCP-XPosedAPI(本地文件包含、查看源码、os.system、命令盲注)

目录 扫描 Web API枚举 命令盲注 提权 扫描 发现了两个开放的端口:端口22上的SSH和端口13337上的未知服务。 用netcat手动探测端口13337,但是运行几个常见的TCP/UDP服务初始化命令没有输出。 尝试了一个完整的脚本和版本nmap扫描的开放端口࿰

Vue3:基础入门

Vue3&#xff1a;基础入门 Date: April 10, 2023 Sum: vue简介、vue的基本使用、vue的指令与过滤器、品牌列表案例 目标&#xff1a; 能够知道 vue 的基本使用步骤 掌握插值表达式和 v-bind 指令的用法 能够掌握如何使用 v-on 指令绑定事件 能够使用 v-model 指令实现数据…

Science | 华盛顿大学Baker团队提出AI新范式设计全新蛋白复合物

蛋白质的结构形态和生物学功能是由氨基酸序列决定的。 人工蛋白质设计的目标就是创造可以折叠成特定结构以实现特定功能的新型氨基酸序列。 当然&#xff0c;这并不是一个简单的问题&#xff0c;因为它需要了解蛋白质如何在细胞中折叠&#xff0c;而这一过程在很大程度上仍不为…

【微服务】- 分布式系统的流量防卫兵 - sentinel

Sentinel流量防卫兵 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 一个有梦有戏的人 怒放吧德德 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff0…

代码优化- 中间表示上的优化

中间表示上的代码优化依赖于具体所使用的中间表示&#xff1a;控制流图&#xff08;CFG&#xff09;、控制依赖图&#xff08;CDG&#xff09;、静态单赋值形式&#xff08;SSA&#xff09;、后续传递风格&#xff08;CPS&#xff09;等 共同的特点是需要进行程序分析&#xf…

7 ADC(一)

7 ADC ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 12位&#xff08;0-2^(12-1)&#xff09;逐次逼近型ADC&#xff0c;1us转换时间…

HTTP连接要考虑超时,重试和并发之原因

一、原因&#xff08;why) 连接超时配置得特别长&#xff0c;比如 60 秒。一般来说&#xff0c;TCP 三次握手建立连接需要的时间非常短&#xff0c;通常在毫秒级最多到秒级&#xff0c;不可能需要十几秒甚至几十秒。如果很久都无法建连&#xff0c;很可能是网络或防火墙配置的…

光纤网卡传输速率和它的应用领域有哪些呢?通常用会到有哪些型号网络变压器呢?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;常有客户问起光纤网卡该如何选用到合适的产品&#xff0c;选用时要注意到哪些事项&#xff0c;这节将结合配合到的网络变压器和大家一起探讨&#xff0c;希望对大家有些帮助。 1&#xff0e;光纤网卡传输速率与网络…

AlgoC++第三课:C++世界观

目录 C世界观前言1. 程序逻辑2. 内存的逻辑3. 调度的逻辑4. 编译的逻辑5. 作用域的逻辑6. 命名空间的逻辑7. 生命周期的逻辑8. C类的逻辑9. 编译时和运行时的逻辑总结 C世界观 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xff0c;链接。记录下个人学习笔记&#xff0c…

如何查看CPU的L2、L3缓存的容量

可以用CPU-Z&#xff0c;不过需要下载。 可以用命令&#xff1a; wmic cpu get L2CacheSize,L3CacheSize结果&#xff1a;

Golang微服务一把嗦 用户微服务集成主流最新go技术栈

声明&#xff1a;此文章为博主个人学习记录&#xff0c;仅供学习和交流&#xff0c;如有侵权请联系博主。 前言 前段时间&#xff0c;因为本地k8s环境一直出问题&#xff0c;线上云环境也用不起&#xff0c;&#xff08;后面搞定了再慢慢学习&#xff09;所以就暂时搁置了k8s学…

SQL Server基础 第二章 表结构管理

目录 一、数据类型 1&#xff0c;字符类数据类型 2&#xff0c;数值型数据类型 3&#xff0c;日期/时间型数据类型 二、主键&#xff08;Primary key&#xff09; 三、默认值 四、唯一键&#xff08;Unique&#xff09; 五、自增标识 六、约束 七、外键 一、数据类型 …

node+vue+mysql+java健身房网站管理系统

通过大数据管理的方法对健身房管理系统进行了详细的设计说明以及介绍&#xff0c;对健身房管理系统进行了开发和实践。作为一个健身房网站&#xff0c;它为用户提供了一个良好的求知平台。让用户能更好地了解健身带来的好处。前端技术&#xff1a;nodejsvueelementui,视图层其实…

3D智能四向穿梭车在电商物流中的应用|HEGERLS箱式四向穿梭车系统在服装制造仓的创新应用

四向穿梭车技术是物流仓储系统中的革命性技术&#xff0c;也由于四向穿梭车对于场地的适应性非常强的特性&#xff0c;可实现前后、左右、上下六维运行&#xff0c;结合提升机的布置和输送系统的布局&#xff0c;灵活调整四向车的空间布局&#xff0c;使某些不规则场地和闲置空…

NXP公司LPC21xx+热敏电阻实现温度检测

LPC2131/32/34/36/38微控制器基于16位/32位Arm7TDMI-S™CPU&#xff0c;支持实时仿真和嵌入式跟踪&#xff0c;具有尺寸小&#xff0c;功耗低&#xff0c;多个32位定时器、单/双10位8通道ADC、10位DAC、PWM通道、47个GPIO线&#xff08;它们拥有多达9个边沿或电平触发的外部中断…

SpringCloud 项目如何方便 maven 打包以及本地开发

一、背景 springcloud-alibaba &#xff0c;使用 nacos 做配置中心&#xff0c;maven 作为构建工具。为了防止 test 、prod 环境配置文件覆盖问题&#xff0c;使用 mvn -P 命令。 二、项目 pom 文件 1. 利用 resources 标签来指定目录&#xff0c;build > resources 标签&a…