如何合法解决SNMP执行需输入sudo密码的脚本问题
解决SNMP执行脚本时sudo需要密码的问题
当通过SNMP扩展执行包含sudo -S ufw disable的脚本时,出现密码提示是因为SNMP扩展默认以Debian-snmp用户身份运行,而该用户执行sudo需要身份验证。以下是合法的解决步骤:
编辑sudoers配置,允许免密执行指定命令
- 执行
sudo visudo打开sudoers配置文件(必须用visudo,它会自动检查语法错误,避免配置失效) - 在文件末尾添加一行配置:
这行配置允许Debian-snmp ALL=(ALL) NOPASSWD: /usr/sbin/ufw disableDebian-snmp用户无需输入密码,执行ufw disable命令。 - 按
Esc键,输入:wq保存并退出。
- 执行
优化脚本内容(可选)
既然已经配置了免密sudo,脚本中的-S参数(用于从标准输入读取密码)可以去掉,修改后的脚本:#!/bin/bash sudo ufw disable验证配置有效性
- 切换到
Debian-snmp用户:su - Debian-snmp - 直接执行
sudo ufw disable,确认无需输入密码即可执行 - 重新用
snmpget调用脚本,检查是否还会出现密码提示
- 切换到
内容的提问来源于stack exchange,提问作者Berkay Ünsal
相关产品推荐
相关产品推荐

