自动化脚本之Debian 开机时运行通过expect自动执行串口命令

简介: 自动化脚本之Debian 开机时运行通过expect自动执行串口命令

在本文中,将探讨如何使用expect自动执行串口命令,并在Debian开机时运行这些命令。

自动执行串口命令

在某些情况下,可能需要自动执行一系列的串口命令。例如,可能需要配置一个设备,然后连接到互联网。在这种情况下,可以使用一个简单的bash脚本来自动执行这些命令。

以下是一个示例脚本:

#!/bin/bash
 
# 打开串口
exec 3<> /dev/ttyUSB2
 
# 发送命令
echo -e "AT+QCFG=\"usbnet\"\r" >&3
sleep 1
echo -e "AT+QICSGP=1,1,\"internet\"\r" >&3
sleep 1
echo -e "AT+QCFG=\"usbnet\",1\r" >&3
 
# 关闭串口
exec 3<&-
exec 3>&-
 
 
AT+QCFG="usbnet"
AT+QICSGP=1,1,"internet"
AT+QCFG="usbnet",1

这个脚本首先打开串口/dev/ttyUSB2,然后发送一系列的AT命令。每个命令后面都有一个sleep命令,以确保设备有足够的时间来处理前一个命令。最后,脚本关闭串口。

使用Expect自动执行串口命令

在某些情况下,可能需要自动执行一系列的串口命令。例如,可能需要配置一个设备,然后连接到互联网。在这种情况下,可以使用expect脚本来自动执行这些命令。

以下是一个示例脚本:

#!/usr/bin/expect
 
# 启动microcom
spawn sudo busybox microcom /dev/ttyUSB2
 
# 发送第一个AT命令并打印
send "AT+QCFG=\"usbnet\"\r"
exp_send_user "Sending: AT+QCFG=\"usbnet\"\n"
 
# 等待设备响应并打印返回值
expect {
    -re "(.*)\r\nOK" {
        exp_send_user "Received: $expect_out(1,string)\n"
    }
}
 
# 发送第二个AT命令并打印
send "AT+QICSGP=1,1,\"internet\"\r"
exp_send_user "Sending: AT+QICSGP=1,1,\"internet\"\n"
 
# 等待设备响应并打印返回值
expect {
    -re "(.*)\r\nOK" {
        exp_send_user "Received: $expect_out(1,string)\n"
    }
}
 
# 发送第三个AT命令并打印
send "AT+QCFG=\"usbnet\",1\r"
exp_send_user "Sending: AT+QCFG=\"usbnet\",1\n"
 
# 等待设备响应并打印返回值
expect {
    -re "(.*)\r\nOK" {
        exp_send_user "Received: $expect_out(1,string)\n"
    }
}
 
# 退出microcom
send "\x1d"
expect eof

这个脚本在启动microcom后立即发送第一个AT命令,然后等待设备返回"OK"。然后,它发送下一个AT命令,等待设备返回"OK",以此类推。最后,它发送一个退出microcom的命令。

在Debian开机时运行脚本

在Debian系统中,可以使用systemd服务来在开机时运行脚本。以下是一个示例systemd服务文件:

[Unit]
Description=Run script at startup
 
[Service]
ExecStart=/path/to/your/script.sh
 
[Install]
WantedBy=multi-user.target

这个服务文件定义了一个新的systemd服务,该服务在开机时运行指定的脚本。你需要将/path/to/your/script.sh替换为你的脚本的实际路径。

要使这个服务在开机时运行,你需要将这个服务文件保存为/etc/systemd/system/your-service-name.service,然后运行以下命令:

sudo systemctl enable your-service-name

这个命令将使your-service-name服务在开机时启动。

在指定文件的指定行增加一行内容

在Linux中,可以使用sed命令在指定的行数插入一行。以下是一个示例,它将在文件的第3行插入一行:

sed -i '37i\ip route add default via 192.168.1.1 dev eth0' /etc/profile
sudo sed -i '22i\ip route add default via 192.168.1.1 dev eth0' /etc/rc.local &&  sudo sed -n '22p' /etc/rc.local

这个命令会直接在原文件上做修改。

总结

在本文中,讨论了如何使用expect自动执行串口命令,如何在Debian开机时运行脚本,以及如何在指定文件的指定行增加一行内容。这些技术可以帮助自动化一些常见的任务,提高的工作效率。

相关文章
|
26天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
19天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
25 7
|
17天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
25天前
|
Ubuntu
ubuntu和debian 的安装包dpkg管理命令对安装包进行安装,查询,卸载
Ubuntu dpkg 软件包管理命令概览:安装、卸载、查看和配置软件包。包括解决依赖、强制卸载、列出及过滤已安装包、查看包详情等操作。
53 10
|
25天前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
22天前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
29天前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
59 9
|
24天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
27天前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
29天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
下一篇
DataWorks