Linux程序设计例题的trap用法你的程序有两个问题,
1,
trap
'rm
-f
/tmp/my_tmp_file_$$'
INT
这里应该用
双引号
"
"
将rm命令括起来,用单引号,
$$
不会变成进程pid
2,
while
[
-f
/tmp/my_tmp_file__$$
]
你一直使用的是
/tmp/my_tmp_file_$$ ,
但是这里却用的是
file__$$
两个下划线 , 错了 。
linux脚本如何在执行过程中获得ctrl clinux中有trap命令可以拦截到ctrl c信号并忽略它:
使用命令kill -l可以列出系统的信号名称,通常我们需要忽略的信号有四个,即:HUP, INT, QUIT, TSTP,也就是信号1, 2, 3, 24;
QUIT即信号3就是表示操作CTRL C;
trap的使用格式为:
trap 操作 信号名称
例如: trap "echo iuioooo" 3表示捕获到信号3(ctrl c)时并不会退出而是会 执行命令echo iuioooo;
同样可以trap "" 3表示什么也不操作 。
使用 trap 3来使其恢复默认设置 。
在linux下,开发trap时,终端运行时出现read_config_store open failure on /var/net-snmp/snmpapp.conf?缺少软件的配置文件snmpapp.conf,这个配置文件他原始目录下应该有个配置文件模板 , 把内容按你自己的需求改下然后文件名改成这个就行了,有的可能要手工建立,这要求你知道他配置文件的内容然后vi创建
求教linux下如何配置snmp trap安装snmp服务
CentOS/RedHat下可以只用yum命令进行安装 。
$yum –y install net-snmp net-snmp-devel
若要使用snmpwalk进行安装检测linuxtrap命令,则还需要安装net-snmp-utils包
$yum –y install net-snmp-utils
Ubuntu可以通过apt-get install snmp snmpd 进行安装
设置安全linuxtrap命令的验证方式
将SNMP代理程序暴露给网络上的所有主机是很危险的linuxtrap命令,为了防止其它主机访问您的SNMP代理程序linuxtrap命令,我们需要在SNMP代理程序上加入身份验证机制 。SNMP支持不同的验证机制linuxtrap命令 , 这取决于不同的SNMP协议版本,云监控目前支持v2c和v3两个版本,其中v2c版本的验证机制比较简单,它基于明文密码和授权IP来进行身份验证,而v3版本则通过用户名和密码的加密传输来实现身份验证,我们建议使用v3,当然,只要按照以下的介绍进行配置,不论是v2c版本还是v3版本,都可以保证一定的安全性,您可以根据情况来选择 。
注意一点 , SNMP协议版本和SNMP代理程序版本是两回事,刚才说的v2c和v3是指SNMP协议的版本 , 而Net-SNMP是用来实现SNMP协议的程序套件,目前它的最新版本是刚才提到的5.4.2.1 。
v2c
先来看如何配置v2c版本的SNMP代理,我们来创建snmpd的配置文件 , 默认情况下它是不存在的 , 我们来创建它 , 如下:
sdo:~ # vi /usr/local/snmp/share/snmp/snmpd.conf
然后我们需要创建一个只读帐号,也就是read-only community,在snmpd.conf中添加以下内容:
rocommunity sdomonitor 114.80.132.9 rocommunity sdomonitor 58.215.169.26 rocommunity sdomonitor 58.215.169.27
如果想要检测服务是否成功开启 , 则还需要在snmpd.conf中添加:
rocommunity sdomonitor 127.0.0.1
注意,这里的"rocommunity"表示这是一个只读的访问权限 , 云监控只可以从您的服务器上获取信息,而不能对服务器进行任何设置 。
紧接着的"sdomonitor"相当于密码,很多平台喜欢使用"public"这个默认字符串 。这里的"sdomonitor"只是一个例子,您可以设置其它字符串作为密码 。
最右边的"60.195.249.83"代表指定的监控点IP,这个IP地址是云监控专用的监控点,这意味着只有云监控有权限来访问您的SNMP代理程序 。
所以,以上这段配置中,只有"sdomonitor"是需要您进行修改的,同时在云监控上添加服务器的时候,需要提供这个字符串 。
v3
当然,我们建议您使用v3版本来进行身份验证 。对于一些早期版本的Linux分发版,其内置的SNMP代理程序可能并不支持v3,所以我们建议您按照前边介绍的方法 , 编译和安装最新的Net-Snmp 。
v3支持另一种验证方式,需要创建一个v3的帐号,我们同样修改以下配置文件:
sdo:~ # vi /usr/local/snmp/share/snmp/snmpd.conf
然后添加一个只读帐号,如下:
rouser sdomonitor auth
可以看到,在v3中,"rouser"用于表示只读帐号类型,随后的"sdomonitor"是指定的用户名,后边的"auth"指明需要验证 。
接下来 , 我们还要添加"sdomonitor"这个用户,这就是v3中的特殊机制,我们打开以下配置文件:
sdo:~ # vi /var/net-snmp/snmpd.conf
这个文件会在snmpd启动的时候被自动调用,我们需要在它里边添加创建用户的指令,如下:
createUser sdomonitor MD5 mypassword
这行配置的意思是创建一个名为"sdomonitor"的用户,密码为"mypassword",并且用MD5进行加密传输 。这里要提醒的是:
密码至少要有8个字节
这是SNMP协议的规定,如果小于8个字节,通信将无法进行 。
值得注意的是 , 一旦snmpd启动后,出于安全考虑,以上这行配置会被snmpd自动删除,当然 , snmpd会将这些配置以密文的形式记录在其它文件中,重新启动snmpd是不需要再次添加这些配置的 , 除非您希望创建新的用户 。
以上配置中的用户名、密码和加密方式,在云监控添加服务器的时候需要添加 。
启动snmp服务
$ service snmpd start
用以下命令检查服务是否启动成功
$ snmpwalk -v 2c -c sdomonitor 127.0.0.1 system
如果要关闭,则可以直接kill这个进程,如下:
$ killall -9 snmpd 或者$ service snmpd stop
linux配置团体名和traplinux配置团体名和trap本文不讲解snmp理论知识,只讲解在linux下环境的配置 。(方便服务器SNMP测试)
以rhel8为例:
1.NetSnmp 工具安装
Linux 安装 netsnmp 采用在线安装的方式(确保测试环境连接 internet):
命令行执行 yum install -y net-snmp 。安装完成后验证是否有如下命令:
主要是 snmpd snmpget snmpset snmpwalk snmptrapd snmptrap snmptranslate
?
(一般安装linux os时,把GUI package里的文件全部勾选,安装完后这些工具都会存在,不需要再额外联网安装)
2.MIB 文件导入
Copy mib 库 文 件 到 默 认 的 mib 库路径,默认的 mib 库路径如下:/usr/share/snmp/mibs 。
设置临时环境变量:export MIBS=all
(注意一定要把mib文件复制粘贴到mib库路径下 。对于新手来说就不要进行其他设置,以避免mib库路径发生变更)
---------------------------------------------------------
SNMP V1/V2 Get 测试
通过 Snmp 接口获取 Chassis 信息:
rwcommstr :读写团体名 (在server端上设置查看)
BMC_IP :BMC 的管理 IP
device.ChassisInfo:参考自己server的OID手册(或者SNMP手册,实在不知道txt打开MIB)
命令:snmpwalk -t 20 -v 2c -c rwcommstr BMC_IP device.ChassisInfo
------------------------------------
SNMP Set 测试
通过 Snmp 接口设置/管理 BMC,需要认证使用 。
BMC_IP :BMC 的管理 IP
user :snmp 用户名 (在server端上设置查看)
password :snmp密码 (在server端上设置查看)
MD5/DES :snmp用户的认证方式(在server端上设置查看)
通过 Snmp 接口开关机
snmpset -v 3 -u user -l authPriv -a MD5 -A password -x DES -X password BMC_IPLENOVO-MIB::PowerStatus.0 i On
snmpset -v 3 -u user -l authPriv -a MD5 -A password -x DES -X password BMC_IPLENOVO-MIB::PowerStatus.0 i Off
---------------------------------
Trap Receiver
(这里是这是SNMP trap接收端)
SNMP V1/V2 Trap Receiver
配置 netsnmp snmptrapd:
修改配置文件 /etc/snmp/snmptrapd.conf(这个路径是默认的,如果有修改请找到自己修改的那个路径)
主要修改最后的字段 , snmptrappfa 保持和下面 BMC 设置 Snmp Trap 的一致
?
(snmptrappfa是团体名,可以不用和文章内一模一样)
修改完成后,启动 snmptrapd 即可启动方式如下:
注意:启动界面需要在配置临时环境保持同一个窗口 。
snmptrapd -C -c /etc/snmp/snmptrapd.conf -f -Lo
------------------------------------
SNMP v3设置
接收Trap端:
1 在 /var/lib/net-snmp/snmptrapd.conf中,用以下命令创建用户
createUser -e 0x8000000001020304 mytrapuser1 SHA "user1authpass" AES "user1encypass
2. 在 /etc/snmp/snmptrapd.conf 中 , 用以下命令授权已经创建好的用户
authUser log,execute,net mytrapuser1
3. 在 /etc/snmp/snmptrapd.conf中,去掉行 authCommunitylog,execute,net snmptrappfa
4. snmptrapd -f -Dusm -Lo 开始接收trap
KGDB补丁是给内核添加什么部件?内核工具KGDB调试环境需要为Linux 内核加上 kgdb补丁,补丁实现GDB远程调试所需要的功能,包括命令处理、陷阱处理及串口通信3个主要的部分 。KGDB补丁的主要作用是在Linux 内核中添加了一个调试Stub 。调试Stub是Linux 内核中的一小段代码 , 是运行GDB的开发机和所调试内核之间的一个媒介 。GDB和调试stub之间通过GDB串行协议进行通信 。GDB串行协议是-种基于消息的ASCII 码协议,包含了各种调试命令 。当设置断点时,KGDB将断点的指令替换为一条 trap指令,当执行到断点时控制权就转移到调试 stub中去 。此时,调试stub 的任务就是使用远程串行通信协议将当前环境传送给GDB,然后从GDB处接收命令 。GDB命令告诉stub 下一步该做什么,当stub收到继续执行的命令时,将恢复程序的运行环境,把对 CPU的控制权重新交还给内核 。KGDB补丁给内核添加以下3个部件:
(1 ) GDB stub
GDB stub被称为调试插桩(简称为stub),是KGDB调试器的核心 。它是Linux内核中的一小段代码 , 用来处理主机上: GDB发来的各种请求;并且在内核处于被调试状态时,控制目标机板上的处理器 。
(2)修改异常处理函数
当这个异常发生时,内核将控制权交给KGDB调试器,程序进入KGDB提供的异常处理函数中 。在里面,可以分析程序的各种情况 。
(3)串口通信
GDB和 stub之间通过GDB串行协议进行通信 。它是一种基于消息的ASCII 码协议,包含了各种调试命令 。除串口外,也可以使用网卡进行通信 。以设置内核断点为例说明KGDB与GDB之间的工作过程 。设置断点时,KGDB修改内核代码,将断点位置的指令替换成一条异常指令(在ARM中这是一条未定义的指令) 。当执行到断点时发生异常,控制权转移到stub 的异常处理函数中 。此时,stub的任务就是使用GDB串行通信协议将当前环境传送给GDB,然后从GDB处接收命令,GDB命令告诉stub下一步该做什么 。当stub收到继续执行的命令时,将恢复原来替换的指令、恢复程序的运行环境,把对CPU的控制权重新交还给内核 。
【关于linuxtrap命令的信息】linuxtrap命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、linuxtrap命令的信息别忘了在本站进行查找喔 。
推荐阅读
- redis怎么理解,redishi
- 现在直播都是什么模式好,现在直播的是什么
- 拍摄花瓣上的小水珠叫什么的简单介绍
- 什么修改器支持安卓5.1,安卓可用的修改器
- c语言的prime函数 c语言prime函数如何判断一个数为素数
- java代码语法,java代码方法
- redis跨机房高可用,redis跨机房集群
- 华为3204服务器,华为3800服务器
- c语言函数返回值null C语言函数返回值由什么决定