首页 > 代码库 > How to fix 'sudo: no tty present and no askpass program'以及硬盘序列号的读写
How to fix 'sudo: no tty present and no askpass program'以及硬盘序列号的读写
在调用system命令读写硬盘序列号的过程中遇到问题,报错如下:
sudo: no tty present and no askpass program
发现此问题是由于帐号并没有开启免密码导致的 。
查找资料,解决方法如下:
方法一:
sudo isudo
然后在最末尾添加:
username ALL = NOPASSWD: /fullpath/to/command,/fullpath/to/othercommandeg:john ALL = NOPASSWD: /sbin/poweroff,/sbin/start,sbin/stop
会允许用户John在进行poweroff,start,stop的时候不需要密码。这里我使用了最简单的方式,如下:
john ALL = NOPASSWD: ALL
添加完成以后就可以无须密码进行sudo操作了。(亲测可用)
方法二:
1 打开sudoers
vi /etc/sudoers
2 添加免密码
john ALL = NOPASSWD: ALL
读取硬盘序列号的方法:
if(system("sudo hdparm -I /dev/sda | grep Serial >> tmpGenuine.txt")>=0){ QFile *tmpFile = new QFile("tmpGenuine.txt");//临时存放文件 if(tmpFile->open(QIODevice::ReadOnly|QIODevice::Text)) { while(!tmpFile->atEnd()) { QString tmpLine; tmpLine = tmpFile->readLine(); tmpLine.indexOf(rx2); genuineNum += rx2.cap(1); } qDebug()<<"genuineNum:"<<genuineNum; } tmpFile->close();}else{ qDebug()<<"can not get the Serial Num"; return 0;}
How to fix 'sudo: no tty present and no askpass program'以及硬盘序列号的读写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。