用来阿里云自动化/腾讯云自动化助手时,一句话修改宝塔面板密码
阿里云/腾讯云自动化只能输入一个命令或者脚本,但是改密码设计交互的操作,得先输入bt 5然后再输入密码,没法交互,所以只能剑走偏锋,用下面的花里胡哨的本身就是linux支持的命令了,这样可以一句话完成,免交互
方法一:使用 echo 和管道传递密码(适用于简单的密码输入)
echo -e "password" | bt 5
password
这里就是密码,输入你想要的即可
方法二:
cd /www/server/panel && python tools.py panel testpassword
注意:testpassword为要修改的面板密码如图:
蓝箭头为面板密码,红箭头为面板账户
究极复杂的方案
在你的情况下,系统要求你输入新密码时,出现了 EOFError
错误。这通常是因为 input()
函数在没有标准输入时不能正常工作。当你在脚本中尝试执行该操作时,input()
无法接收到键盘输入,因此出现了 EOFError
。
要自动化这个过程,可以尝试通过管道传递密码,或者使用 expect
工具来模拟输入。因为这个操作是一个交互式的过程,可以使用 expect
来模拟键盘输入。
使用 expect
工具解决问题
expect
是一个专门用于自动化交互式命令行工具的工具,可以用来模拟用户的输入。
步骤:
-
安装
expect
(如果没有安装)在大多数 Linux 发行版中,可以使用以下命令安装
expect
:yes | sudo apt install expect # 对于 Ubuntu/Debian 系统 yes | sudo yum install expect # 对于 CentOS/RHEL 系统
-
编写
expect
脚本来模拟输入密码,直接放在自动化里面就行,复制粘贴创建一个
expect
脚本来自动输入密码。假设你需要为某个命令(如bt 5
)提供密码输入:#!/usr/bin/expect # 启动命令 spawn bt 5 # 等待 "请输入新的面板密码:" 提示 expect "请输入新的面板密码:" # 发送新密码 send "66666666\r" # 等待命令结束 expect eof