Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为“提供密码”;sudo“;使用NMSSH库的命令_Ios_Objective C_Cocoa Touch_Ssh_Sudo - Fatal编程技术网

Ios 为“提供密码”;sudo“;使用NMSSH库的命令

Ios 为“提供密码”;sudo“;使用NMSSH库的命令,ios,objective-c,cocoa-touch,ssh,sudo,Ios,Objective C,Cocoa Touch,Ssh,Sudo,我正在为Objective-C使用一个很棒的libssh包装器。我能够建立连接、发送命令等,但我遇到了一些麻烦。每当我发送诸如“sudo..something”之类的提升命令时,我的响应对象中就会出现以下错误: Error: Error Domain=NMSSH Code=0 "sudo: no tty present and no askpass program specified " UserInfo=0x145a65e0 {command=sudo apachectl start, NSL

我正在为Objective-C使用一个很棒的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}

如何告诉程序密码是什么?

使用
sudo-S

[session.channel execute:@"echo password | sudo -S apachectl start" error:&error];
从手册页:

-S(stdin)选项使sudo从 标准输入,而不是终端设备。密码必须为 后跟换行符


使用
sudo-S

[session.channel execute:@"echo password | sudo -S apachectl start" error:&error];
从手册页:

-S(stdin)选项使sudo从 标准输入,而不是终端设备。密码必须为 后跟换行符


使用
sudo-S

[session.channel execute:@"echo password | sudo -S apachectl start" error:&error];
从手册页:

-S(stdin)选项使sudo从 标准输入,而不是终端设备。密码必须为 后跟换行符


使用
sudo-S

[session.channel execute:@"echo password | sudo -S apachectl start" error:&error];
从手册页:

-S(stdin)选项使sudo从 标准输入,而不是终端设备。密码必须为 后跟换行符


约拿布的解决方案是一个很好的简单方法,但它是非常不安全的

如果有人想以更安全的方式进行操作,他应该在目标系统上编辑“Sudoers文件”,如果可能的话,比如showen或

只要开始编辑就可以了

sudovisudo

并超过以下编辑版本:

用户名ALL=(ALL)NOPASSWD:/path/to/script


在文件的最后。

jonahb的解决方案是一种很好且简单的方法,但它非常不安全

如果有人想以更安全的方式进行操作,他应该在目标系统上编辑“Sudoers文件”,如果可能的话,比如showen或

只要开始编辑就可以了

sudovisudo

并超过以下编辑版本:

用户名ALL=(ALL)NOPASSWD:/path/to/script


在文件的最后。

jonahb的解决方案是一种很好且简单的方法,但它非常不安全

如果有人想以更安全的方式进行操作,他应该在目标系统上编辑“Sudoers文件”,如果可能的话,比如showen或

只要开始编辑就可以了

sudovisudo

并超过以下编辑版本:

用户名ALL=(ALL)NOPASSWD:/path/to/script


在文件的最后。

jonahb的解决方案是一种很好且简单的方法,但它非常不安全

如果有人想以更安全的方式进行操作,他应该在目标系统上编辑“Sudoers文件”,如果可能的话,比如showen或

只要开始编辑就可以了

sudovisudo

并超过以下编辑版本:

用户名ALL=(ALL)NOPASSWD:/path/to/script


在文件的最后。

我对这个答案投了更高的票,因为它确实有效,但是,取决于您的发行版,它不起作用。例如,在CentOS机器上使用NMSSH执行以下操作将返回相同的错误“echo | sudo-S ls/etc/init.d/”,但它将在Ubuntu上开箱即用。更多详细信息,请参阅本文。我对这个答案投了赞成票,因为它确实有效,但是,根据您的发行版,它不起作用。例如,在CentOS机器上使用NMSSH执行以下操作将返回相同的错误“echo | sudo-S ls/etc/init.d/”,但它将在Ubuntu上开箱即用。更多详细信息,请参阅本文。我对这个答案投了赞成票,因为它确实有效,但是,根据您的发行版,它不起作用。例如,在CentOS机器上使用NMSSH执行以下操作将返回相同的错误“echo | sudo-S ls/etc/init.d/”,但它将在Ubuntu上开箱即用。更多详细信息,请参阅本文。我对这个答案投了赞成票,因为它确实有效,但是,根据您的发行版,它不起作用。例如,在CentOS机器上使用NMSSH执行以下操作将返回相同的错误“echo | sudo-S ls/etc/init.d/”,但它将在Ubuntu上开箱即用。有关更多详细信息,请参阅本文