jetson开机之前自启脚本sudo ifconfig 如何不需要输入密码

在 Jetson(Ubuntu 22.04)上设置开机自启脚本有两种主流方式:

  • 🟢 现代推荐:Systemd Service(最稳定、受控、可查看日志)

  • 🔵 旧方式:rc.local(简单直接,但不推荐长期用)

下面我给你两种方式都讲清楚。


🟢 方法一:使用 systemd(推荐)

假设你要在开机时执行:

sudo ifconfig enP8p1s0 192.168.1.100 up

① 新建脚本

  1. 创建目录(建议放在 /usr/local/bin):

  2. sudo mkdir -p /usr/local/bin

  3. 新建脚本:

  4. sudo nano /usr/local/bin/netstart.sh

  5. 写入内容:

  6. #!/bin/bash /sbin/ifconfig enP8p1s0 192.168.1.100 up

  7. 保存退出(Ctrl+O → 回车 → Ctrl+X

  8. 赋予执行权限:

  9. sudo chmod +x /usr/local/bin/netstart.sh


② 创建 systemd service

  1. 创建 service 文件:

  2. sudo nano /etc/systemd/system/netstart.service

  3. 填入内容(注意路径一致):

    复制代码
    [Unit] Description=Set static IP for enP8p1s0 After=network.target [Service] Type=oneshot ExecStart=/usr/local/bin/netstart.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target 
  4. 保存退出。


③ 启用并测试

复制代码
sudo systemctl daemon-reload sudo systemctl enable netstart.service sudo systemctl start netstart.service 

验证:

ifconfig enP8p1s0

你应该能看到 IP 已被设置为 192.168.1.100

查看日志:

sudo journalctl -u netstart.service


🔵 方法二:用 /etc/rc.local(简易方式)

  1. 创建文件sudo nano /etc/rc.local

  2. 写入:#!/bin/bash /sbin/ifconfig enP8p1s0 192.168.1.100 up exit 0

  3. 赋予执行权限:sudo chmod +x /etc/rc.local

  4. 创建 service 支持 rc.local(因为 Ubuntu 22.04 默认没启用): sudo nano /etc/systemd/system/rc-local.service

  5. 填入:

    复制代码
    [Unit] Description=/etc/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target 
  6. 启用:

    复制代码
    sudo systemctl daemon-reload sudo systemctl enable rc-local sudo systemctl start rc-local 

✅ 推荐总结

方式 优点 推荐程度
systemd service 稳定、可控、能看日志 🟢 强烈推荐
rc.local 简单、老式、兼容性差 🟡 临时用

要不要我帮你写一个具体适合你 Jetson(网口 enP8p1s0)的开机自动配置脚本?

例如设置静态 IP、启动 SSH、检测网络后再执行。

还有Jetson / Ubuntu 系统自带的图形化方式

叫做:

"Startup Applications"

(中文界面中叫「启动应用程序」或「启动项」)

它确实可以让你在开机登录图形界面后自动运行脚本或命令。

不过------要注意它和 systemd 的区别 👇


⚙️Startup Applications 是什么

  • 它属于 桌面环境(GNOME)的一部分

  • 仅在 用户登录图形界面之后 执行;

  • 执行的程序 以当前用户权限 运行(不是 root);

  • 常用于启动 GUI 应用或简单命令。

几个注意点

  • 这种方式需要图形登录(比如你要进入桌面),不会在纯命令行启动阶段运行

  • 如果执行 sudo 命令,仍然会要求输入密码。

    👉 可以配合 sudoers 免密配置:

    复制代码
    zylox ALL=(ALL) NOPASSWD: /sbin/ifconfig 
  • 如果你要在无人值守(headless)模式 下启动服务(比如设备通电自动执行),还是建议用 systemd


✅ 四、总结推荐

场景 推荐方式
开机自动运行后台服务 / 设置网络 🟢 systemd service
用户登录桌面后启动程序 🟡 Startup Applications
临时实验、自定义命令 🟣 rc.local(简单但老旧)

第二步:

如果你希望 Jetson 开机后执行 sudo ifconfig 时不需要输入密码 ,可以通过修改 sudoers 配置来实现。下面是安全、正确的做法 👇


🧭 目标

让特定用户(比如 bingzylox)在执行某些命令(如 ifconfig)时无需输入密码。


✅ 方法一:仅免密码执行 ifconfig

  1. 打开 sudoers 编辑器(推荐使用 visudo,它会自动检查语法)sudo visudo

  2. 在文件底部添加一行(请将 your_username 替换为你的实际用户名,例如 zyloxbing):

    复制代码
    your_username ALL=(ALL) NOPASSWD: /sbin/ifconfig 

    Jetson 系统中 ifconfig 一般位于 /sbin/ifconfig,可以用以下命令确认路径:

    复制代码

    which ifconfig

  3. 保存退出(Ctrl+OEnterCtrl+X)。

  4. 验证:sudo ifconfig

    ✅ 不会再提示输入密码。


✅ 方法二:免密码执行所有 sudo 命令(不推荐)

如果是开发板实验环境、完全信任的单用户设备,也可以让所有 sudo 命令都免密:

  1. 编辑:

    复制代码
    sudo visudo 
  2. 找到这一行(通常在文件中间):

    复制代码
    %sudo ALL=(ALL:ALL) ALL 

    改为:

    复制代码
    %sudo ALL=(ALL:ALL) NOPASSWD: ALL 
  3. 或者针对单个用户写法:

    复制代码
    your_username ALL=(ALL) NOPASSWD: ALL 

✅ 方法三:开机自动执行 ifconfig(比如设置静态 IP)

如果你只是想在开机时自动执行 ifconfig(例如设置网络),而不是手动敲命令,可以把脚本放在:

复制代码
/etc/rc.local 

复制代码
/etc/systemd/system/ 

中作为 service 自动运行,这样连 sudo 都不需要手动输入。

相关推荐
aoxiang_ywj2 小时前
SQLite 速成学习
数据库·sqlite
普普通通的南瓜2 小时前
网站提示 “不安全”?免费 SSL 证书一键解决
网络·数据库·网络协议·算法·安全·iphone·ssl
张3蜂2 小时前
import org.junit.Test; 是什么
数据库·junit
不惑_2 小时前
[特殊字符] 在 macOS 上设置 SQLite
数据库·macos·sqlite
不惑_2 小时前
[特殊字符] 在 Windows 上设置 SQLite
数据库·windows·sqlite
上线就吃代码2 小时前
【等保测评】数据库数据库配置have_ssl参数为yes
服务器·数据库·ssl
谅望者2 小时前
数据分析笔记04:抽样方法与抽样分布
数据库·笔记·数据挖掘·数据分析
q***9942 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
老华带你飞3 小时前
记录生活系统|记录美好|健康管理|基于java+Android+微信小程序的记录生活系统设计与实现(源码+数据库+文档)
android·java·数据库·vue.js·生活·毕设·记录生活系统