我正在为Objective-C called NMSSH使用一个很棒的libssh包装器。我能够建立连接,发送命令等,但我遇到了一些麻烦。每当我发送像“sudo..something”这样的提升命令时,我的响应对象中出现以下错误:
Error: Error Domain=NMSSH Code=0 "sudo: no tty present and no askpass program specified
" UserInfo=0x145a65e0 {command=sudo apachectl start, NSLocalizedDescription=sudo: no tty present and no askpass program specified
, NSLocalizedFailureReason=54}
如何告诉程序密码是什么?
答案 0 :(得分:3)
使用sudo -S
:
[session.channel execute:@"echo password | sudo -S apachectl start" error:&error];
从手册页:
-S(stdin)选项导致sudo从中读取密码 标准输入而不是终端设备。密码必须是 接着是换行符。
答案 1 :(得分:0)