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

相关文章
|
2月前
|
Ubuntu 安全 调度
在Ubuntu下安装Debian包:dpkg与apt命令的深度解构。
安装Debian包的知识,就像掌握了海上的航行技术,虽然起初会让人感到陌生甚至困惑,但只要你积累熟练,就能在Ubuntu的世界里畅游无阻。就像每一位成功的航海家,掌握好这些工具,去探索属于你的Ubuntu新世界吧!
91 21
|
27天前
|
Ubuntu Linux
Ubuntu中dpkg和apt命令:debian包安装详解
希望这让你对于Ubuntu中的dpkg和apt命令有了更为清晰的理解。下次你面对软件包安装的问题,就可以轻松应对,优雅地在你的Linux系统中游刃有余了。
173 10
|
2月前
|
人工智能 自然语言处理 API
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
Proxy Lite 是一款开源的轻量级视觉语言模型,支持自动化网页任务,能够像人类一样操作浏览器,完成网页交互、数据抓取、表单填写等重复性工作,显著降低自动化成本。
307 11
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
|
5月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
391 61
|
2月前
|
Ubuntu Linux Windows
Debian:apt-get命令汇总
`apt-get` 是 Debian 及其衍生发行版(如 Ubuntu)中的核心包管理工具,用于安装、更新和卸载软件。它通过操作 `.deb` 格式的软件包,实现对系统软件的集中管理。常见命令包括 `install`(安装)、`remove`(卸载)、`update`(更新软件列表)和 `upgrade`(升级软件)。此外,`autoclean` 和 `clean` 可清理无用的包文件以释放空间。掌握 `apt-get` 的使用方法,是 Linux 系统管理的基础技能之一。
64 3
|
2月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
4月前
|
Web App开发 人工智能 JSON
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
AutoMouser是一款Chrome扩展程序,能够实时跟踪用户交互行为,并基于OpenAI的GPT模型自动生成Selenium测试代码,简化自动化测试流程。
270 17
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
|
4月前
|
Web App开发 数据采集 JavaScript
Chrome浏览器实例的TypeScript自动化脚本
Chrome浏览器实例的TypeScript自动化脚本
|
5月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
197 7
|
5月前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等