【开发/调试工具】【Linux】嵌入式Linux环境下如何自动化执行操作

简介: 【开发/调试工具】【Linux】嵌入式Linux环境下如何自动化执行操作

引子


  • 在嵌入式Linux的开发调试过程中,有时需要执行一些复杂的操作,诸如shell登陆、重复执行命令等操作,如果全部人工来执行,效率低下且有时不现实。


  • 本文将常用的嵌入式Linux环境下自动执行操作的方法做一总结,供各位参考。


编程语言方式


shell脚本


  • shell脚本就是为Linux而生的,登陆Linux的shell之后,shell脚本基本上可以完成各种复杂的逻辑,如循环、判断、执行命令等,相关资料很多,这里就不再赘述了。


Python程序


  • 例1、利用python向串口发送ifconfig指令


 # 导入模块
 import serial
 # 需要发送的串口指令
 cmd = 'ifconfig'
 # 将字符串转换成字节
 cmd=bytes.fromhex(cmd)
 # 生成串口
 serial_com = serial.Serial("com1", 115200, timeout=5)
 # 发送串口指令
 serial_com.write(cmd)
 # 读取串口返回结果
 serial_com.read(1024)
 # 关闭串口
 serial_com.close()


VBS脚本(配合SecureCrt软件)


  • 例1、每3s执行一次ifconfig命令


#$language = "VBScript"
#$interface = "1.0"
Sub  main
crt.Screen.Synchronous = True
While 1
    crt.Screen.Send "ifconfig" & VbCr
    crt.Screen.WaitForString "#"
    crt.Sleep 1000*3
Wend
End Sub


  • 例2、自动登陆串口并连续读取三次snmp文件


#$language = "VBScript"
#$interface = "1.0"
Sub main
    Dim ReadCounter
    crt.Screen.Send VbCr 
    crt.Screen.WaitForString "login: "
    crt.Screen.Send "root" & VbCr
    crt.Screen.WaitForString "Password: "
    crt.Screen.Send "root" & VbCr
    crt.Screen.WaitForString "#"
    for ReadCounter = 1 to 3
        crt.Screen.Send "cat /proc/net/snmp" & VbCr
      crt.Screen.WaitForString "#"
      crt.Sleep 100
    next
    transmit "reboot^M" 
End Sub


ASPECT脚本(Procomm Plus自带)


例1、自动执行100次ifconfig命令


proc main
   integer Num                ; Integer variable to increment.
   for Num = 1 upto 100       ; Init variable and define loop.
     transmit "ifconfig"
     waitfor "#"
   endfor
endproc


例2、周期查看pci设备并重启设备


proc main
  integer WaitCounter= 0
  while (WaitCounter++) < 1000
        transmit "root^M"
        waitfor "Password:"
        transmit "root^M"
      waitfor "#"
      transmit "ls /proc/bus/pci/devices ^M"
        waitfor "#"
      transmit "reboot^M"     
      pause 2400
  endwhile
endproc


利用expect


  • 例1、自动登陆ssh:


#!/usr/bin/expect -f
set timeout 30
spawn ssh -l my_username@192.168.1.1
expect "password:"
send "my_password\r"
interact


工具方式


MobaXterm


  • 该软件自带Macro功能,可根据需要组合键盘的回车、换行、文字输入、sleep等操作:



IPOP


  • 终端工具,这里可按文件或文本方式输入各种命令:



串口精灵


  • 发送数据可发送十六进制(HEX)格式和ASCII码,可以设置定时发送的数据以及时间间隔。可以自动显示接收到的数据,串口调试精灵官方版支持HEX或ASCII码显示。是工程技术人员监视、调试串口程序的必备工具。



MicroLab


  • 支持串口/网络动态指令编程:



小结


  • 本文简单探讨了几种Linux环境下自动执行命令的方式,具体如何选用可根据实际的环境和需要来选取;


  • 至于具体的使用的语言或工具本身,网上都有相关资料,需要时可深入了解一下。
相关文章
|
20天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
66 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
Web App开发 编解码 Linux
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
这篇文章介绍了使用Selenium自动化测试解决报告生成失败问题的方法,包括Linux环境下的部署指南和代码实现。
44 1
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
|
2月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
92 4
|
2月前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
134 2
|
2月前
|
存储 Linux 开发工具
如何进行Linux内核开发【ChatGPT】
如何进行Linux内核开发【ChatGPT】
|
3月前
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
43 6
|
3月前
|
消息中间件 算法 Unix
Linux设备驱动开发详解1
Linux设备驱动开发详解
47 5
|
3月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
3月前
|
Ubuntu Linux 持续交付
在Linux中,如何在Linux中使用Ansible进行自动化部署?
在Linux中,如何在Linux中使用Ansible进行自动化部署?
|
3月前
|
运维 Linux 持续交付
在Linux中,如何进行配置管理和自动化部署?
在Linux中,如何进行配置管理和自动化部署?