首页 > 系统相关 >【shell脚本】将Shell脚本转换为Systemd服务:轻松实现自动化管理

【shell脚本】将Shell脚本转换为Systemd服务:轻松实现自动化管理

时间:2024-11-03 22:47:03浏览次数:2  
标签:脚本 bin systemd Shell sudo Systemd usr 执行

原创 青菜浪人

背景介绍

从 Ubuntu 17.10 开始,/etc/rc.local 文件不再默认存在于系统中,因为 systemd 已成为主要的初始化系统。如果需要在系统启动时自动执行某些命令,可以通过编写 Shell 脚本并将其封装为一个 systemd 服务来实现这一操作。

实现方法

这里以一个简单的脚本为例,将需要开机自动执行的命令写入脚本文件内,赋予可执行权限。

脚本内容如下:

#!/usr/bin/env bash
sudo ip route del default via 192.168.1.254
sudo ip route add 192.168.101.0/24 via 192.168.1.254 dev ens33

该脚本用于删除和添加路由,赋予脚本可执行权限

sudo chmod +x /usr/local/bin/routeadd.sh

创建 systemd 文件

文件存放位置:

/etc/systemd/system/xx.service

写入以下内容,在 ExecStart 中指定脚本存放位置

[Unit]
Description=routeadd
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/routeadd.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

修改完成后赋予自定义文件可执行权限

sudo chmod +x  /etc/systemd/system/xx.service

最后,设置为开机自启动即可

systemctl enable routeadd.service

查看开机启动项,可以看到自定义的服务已经设置成功了

PS:如果当前用户为普通用户,需要注意脚本内容中是否有需要使用 sudo 命令的部分。如果有,需提前为该用户配置免密执行 sudo 的权限,否则脚本将无法正确执行。

配置用户免密执行sudo

为了使普通用户能够免密执行自定义脚本并实现开机自启动,需要修改 /etc/sudoers 文件,添加相应的免密执行命令及其对应的用户

#配置这个是对sudo组中的所有用户生效
%sudo  ALL=(ALL:ALL) ALL
%sudo  ALL=(ALL:ALL)  NOPASSWD:/usr/sbin/ip,/usr/bin/systemctl

#如只需要对单独的用户生效,则注释掉%sudo该行,添加以下内容即可,test为用户名
test  ALL=(ALL:ALL) ALL
test  ALL=(ALL:ALL)  NOPASSWD:/usr/sbin/ip,/usr/bin/systemctl

参考

标签:脚本,bin,systemd,Shell,sudo,Systemd,usr,执行
From: https://www.cnblogs.com/o-O-oO/p/18521039

相关文章

  • mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
    @目录背景说明背景说明我这里主要针对2处地方要进行增量执行sql:1.新功能需要创建一张新表结构indicator_alarm_threshold2.给菜单表和另一个表新增数据我们现在使用的是项目启动先初始化加载init-table.sql的脚本(这里面的轻易不动了,保持原结构数据),然后还有个用于后续迭......
  • 大数据学习笔记 第4天 Shell编程基础高级实战详解
    Shell一、Shell编程概述Shell本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序。用户通过Shell来使用Linux,不启动Shell的话,用户就没办法使用Linux。在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(commandinterpr......
  • [免费]SpringBoot+Vue智慧校园(校园管理)系统[论文+源码+SQL脚本]
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot++Vue智慧校园(校园管理)系统,分享下哈。项目视频演示【免费】SpringBoot+Vue智慧校园(校园管理)系统Java毕业设计_哔哩哔哩_bilibili项目介绍随着信息技术的迅猛发展,智慧校园建设逐渐成为高校发展的重要趋势。本文旨......
  • xshell-ssh自动多级跳转功能介绍
    xshell-ssh自动多级跳转功能介绍使用xshell在登陆到服务器时,可以配置需要自动执行的命令。最常用的是,我们可以使用此特性完成ssh自动多级跳转。通常,现网生产环境是和不能通过公网直接登陆,需要先登陆到跳板机然后二次登陆。xshell-ssh自动多级跳配置步骤下面以韶山项目的一组......
  • Icaros 3.3.3 测试版 2 是一组轻量级、高质量的 Windows Shell 扩展,能够为几乎任何视
    Suggested useful videotoolsforFREEIcaros3.3.3beta2 isacollectionoflightweight,highquality,WindowsShellExtensions,whichiscapableofprovidingWindowsExplorerthumbnailsforessentiallyanyvideomediafiletype.IcaroscanprovideWindows......
  • 【bat脚本】批处理如何把文本文件分割成N个文本文件?
    原创bat学习Bat批处理学习站需求比如我现在有一文本文件,我要上传,但是太大(文件8-12M之间),不允许,我想把它分割成N个小文件(按行分割,行数可以自行设定),文件内容全部是数字和部分符号,比如内容:123456+7234567+8345678+9456789+10567891......
  • 【Linux安全】Shellcoding
    原创haidragon安全狗的自我修养“面向安全专业人员的LinuxShellcoding”今天我们将学习LinuxShellcoding并学习实践知识。shell代码编写shellcode是了解有关汇编语言以及程序如何与操作系统交互的更多信息的好方法。为什么红队成员和渗透测试人员编写shellcode?因......
  • 【shell脚本】利用Nmap扫描结果提取IP地址
    原创脚本家园在网络安全和运维管理中,我们常常需要扫描网络以获取设备信息,并对这些信息进行处理和分析。Nmap(NetworkMapper)是一款功能强大的网络扫描工具,它可以帮助我们获取网络中的设备信息,包括IP地址、MAC地址、开放的端口等。今天,我们将通过一篇实战文章,介绍如何利用Bash脚......
  • CTF学习(17)MISC(后门查杀/webshell后门)
    后门查杀1.解压获得html文件夹(入门用的工具题吗)--->使用D盾以文本文件格式打开include.php文件后发现pass处有段md5数据(实为flag)(还是不太明白md5加密的特征,只是长度一样吗)FLAG:flag{6ac45fb83b3bc355c024f5034b947dd3}webshell后门1.根据题目提示得知密码即为flag--......