Shell脚本根据设备名自动获取设备号

写驱动的时候如果使用自动分配设备号的方式,在创建设备结点的时候需要在 '/proc/devices' 文件中查看一下所分配的设备号。可以通过awk命令:

awk '{if($2=="your-driver") {print $1}}' /proc/devices

mknod.sh

这个脚本能够自动获取设备号并创建设备节点:

#!/bin/bash

driver=$1
dir=$2
major=`awk "{if(\\$2==\\"$driver\\") {print \\$1}}" /proc/devices`
#major=`awk '{if(\$2=="usb") {print \$1}}' /proc/devices`
mknod /dev/$dir/$driver c $major 0

把脚本保存为 mknod.sh,使用命令'chmod +x mknod.sh'改成可执行文件,再使用如下命令在/dev/your-dir目录下创建设备节点:

./mknod.sh your-driver your-dir

也可在/dev目录下创建设备节点:

./mknod.sh your-driver

在Makefile中加入如下项目:

setup:
    insmod your-mod.ko
    mkdir /dev/your-dir
    ./mknod.sh your-driver your-dir

unsetup:
    rmmod your-mod.ko
    rm -rf /dev/your-dir

major.sh

这个脚本可返回设备号:

#!/bin/bash

driver=$1
awk "{if(\$2==\"$driver\") {print \$1}}" /proc/devices

在Makefile中加入如下内容:

setup:
    insmod your-mod.ko
    mkdir /dev/your-dir
    mknod /dev/your-dir/your-driver c `./major.sh your-driver` 0

unsetup:
    rmmod your-mod.ko
    rm -rf /dev/your-dir

Makefile

Makefile也可以不借助shell脚本实现:

setup:
    insmod your-mod.ko
    mkdir /dev/your-dir
    mknod /dev/your-dir/your-driver c `awk '{if($$2=="your-driver") {print $$1}}' /proc/devices` 0

unsetup:
    rmmod your-mod.ko
    rm -rf /dev/your-dir

需要注意的是Makefile中$的转义和Shell中不一样。在Makefile 中 "$"、"#" 有特殊含义,转义方式为 "/#"、"$$"。

总结

本文尝试了三种方式的Makefile,区别只在于对awk命令进行了不同方式的转义:

setup:
    insmod your-mod.ko
    mkdir /dev/your-dir
    ./mknod.sh your-driver your-dir
    mknod /dev/your-dir/your-driver c `./major.sh your-driver` 0
    mknod /dev/your-dir/your-driver c `awk '{if($$2=="your-driver") {print $$1}}' /proc/devices` 0

注:

  1. 本文中shell脚本可以直接使用,但是Makefile示例需要把your-mod,your-driver,your-dir改成你自己的东西。
  2. 注意'和`的区别,一个在数字键1的左边,一个在;的右边。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 编写shell脚本实现交换机的自动巡检,可以使用如下步骤: 1. 获取交换机的状态信息:使用命令行工具如 "snmpwalk" 或 "snmpget" 获取交换机的相关信息,包括端口状态、流量等。 2. 分析获取的信息:使用脚本语言,如 shell、python 等,分析获取的信息,并筛选出需要关注的信息,例如网络中存在的故障。 3. 报告问题:如果发现网络故障,则使用邮件、短信或其他方式将故障信息通知管理员。 4. 定时执行:使用 "cron" 等定时任务工具,定期执行自动巡检任务,保证网络的正常运行。 以上是编写自动巡检脚本的大致流程,具体实现方式可以根据实际情况调整。 ### 回答2: 编写Shell脚本实现交换机自动巡检可以通过以下步骤: 1. 首先,需要定义需要检查的交换机列表。可以将交换机的IP地址或主机保存在一个文件中,例如switch_list.txt。 2. 在脚本中使用循环来遍历交换机列表。可以使用while或for循环结构。 3. 对于每个交换机,在脚本中执行需要的巡检命令。可以使用SSH或telnet等远程终端连接工具,以交换机的IP地址或主机作为目标来执行巡检命令。例如,可以使用ping命令来测试交换机的可达性,使用show命令来获取交换机的配置、端口状态等信息。 4. 将巡检结果保存到一个文件中,例如switch_result.txt。可以使用重定向符“>>”来将输出追加到文件中。 5. 可以在脚本中加入错误处理的功能。例如,当连接交换机失败时,输出错误信息并继续巡检下一个交换机。 6. 最后,当所有交换机都巡检完毕后,可以通过邮件或其他方式通知运维人员。可以使用邮件发送命令,将巡检结果文件作为附件发送给指定的邮箱。 通过编写这样的Shell脚本,可以实现交换机的自动巡检,节省了手动操作的时间和精力,并且可以提高巡检的准确性和效率。 ### 回答3: 编写shell脚本,实现交换机自动巡检是一项涉及到网络设备自动化管理的任务。为了实现这个目标,你可以采取以下步骤: 1. 首先,需要在Shell脚本中定义交换机的IP地址和认证信息(例如用户和密码)。 2. 使用SSH协议连接到交换机,并通过远程命令执行相关命令来获取交换机的状态和配置信息。可以使用expect工具来自动发送指令并接收结果。 3. 对于交换机的巡检,你可以编写脚本获取交换机的称、型、固件版本等基本信息。 4. 进一步,你可以通过脚本获取交换机的端口状态、VLAN配置、链路聚合等详细信息。你可以使用命令如"show interfaces status"、"show vlan"等来获取这些信息。 5. 除了基本信息和配置,你还可以编写脚本来检查交换机的性能指标,如CPU利用率、内存利用率、带宽利用率等。你可以使用命令如"show processes cpu", "show processes memory"来获取这些信息。 6. 最后,你可以将巡检结果记录在日志文件中,以便后续分析和处理。 需要注意的是,具体的脚本实现会根据交换机的型和操作系统而有所不同。你可能需要参考交换机的厂商文档,了解具体的命令和参数。同时,为了保证脚本的安全性,确保在交换机中配置了合适的访问控制和权限限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值