分页: 1 / 1

使用了shell脚本和expect脚本写了个可以自动输入sudo密码的程序,但是除了点问题请教

发表于 : 2013-10-31 11:41
散吧散吧
我在ubuntu12.04下做嵌入式开发,自己写了个可以直接编译并且下载程序到开发板子的脚本,因为其中的下载的相关程序,必须是在root下设置环境变量后运行,但是在shell脚本中使用sudo su之后需要输入密码,于是网上百度了下,我使用了expect脚本调用,现在的代码是这样的

代码: 全选

expect -f install.exp
export PATH=$PATH:/home/xiaofei/stm32/stlink/
st-flash erase #和程序在下载有关的命令
read ENTER
EOF
这是compile.sh文件,然后在在这个文件里面调用install.exp文件
这是install.exp文件

代码: 全选

#!/usr/bin/expect -f
set timeout 60
spawn sudo sudo su
expect "password for xiaofei:"
send "20132013\r"
interact
下面的是运行结果
运行结果.png
可以看到在执行完成expect脚本之后他就把控制权利交给终端了没有继续执行我后面的程序

Re: 使用了shell脚本和expect脚本写了个可以自动输入sudo密码的程序,但是除了点问题请教

发表于 : 2013-10-31 11:43
eexpress
sudo -S 吧

Re: 使用了shell脚本和expect脚本写了个可以自动输入sudo密码的程序,但是除了点问题请教

发表于 : 2013-10-31 12:09
散吧散吧
eexpress 写了:sudo -S 吧
我试过了没用啊。。。

Re: 使用了shell脚本和expect脚本写了个可以自动输入sudo密码的程序,但是除了点问题请教

发表于 : 2013-11-01 18:09
needle
映像里, expect是模拟交互的~
人家说的sudo -S是
echo 'password' | sudo -S pwd
这样子.

Re: 使用了shell脚本和expect脚本写了个可以自动输入sudo密码的程序,但是除了点问题请教

发表于 : 2013-12-29 10:28
iceveil
散吧散吧 写了:
eexpress 写了:sudo -S 吧
我试过了没用啊。。。

代码: 全选

#!/bin/sh
echo "pwd" | sudo -S echo
sudo -i
运行后直接进入root 在后面使用要运行的脚本就好了