自动化脚本之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开机时运行脚本,以及如何在指定文件的指定行增加一行内容。这些技术可以帮助自动化一些常见的任务,提高的工作效率。

相关文章
|
9天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
36 2
|
11天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
27 3
|
17天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
63 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
18天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
22天前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
19 3
|
24天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
25 1
|
1月前
|
人工智能 运维 Devops
自动化运维之路:从脚本到DevOps的转变
【10月更文挑战第7天】在这篇文章中,我们将一起探索自动化运维的演变历程,从最初的简单脚本到现代的DevOps实践。我们将深入理解自动化如何改变了运维工作的本质,并讨论实现这一转变的关键技术和策略。文章将不包含代码示例,而是聚焦于理念、工具和方法论的介绍,旨在为读者提供一个全面的自动化运维框架视图。
|
1月前
|
人工智能 运维 监控
自动化运维:从脚本到工具的演变之路
【10月更文挑战第8天】在数字化时代的浪潮中,运维不再是简单的硬件维护,它已经演变成一场关于效率、稳定性和创新的技术革命。本文将带您领略自动化运维的魅力,从最初的脚本编写到现代复杂的自动化工具,我们将一探究竟,看看这些工具如何帮助运维人员简化日常任务,提升工作效率,并最终推动业务发展。
|
1月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
39 0
下一篇
无影云桌面