

現在は以下のようにして実行しているのですが、パスワードが間違っていた時にアプリケーションが固まってしまいます。

swift

[code]

    let task = NSTask.launchedTaskWithLaunchPath("/bin/sh", arguments: ["-c","/AAAA.sh","sleep 3"])
     task.waitUntilExit()
    
[/code]

AAAA.sh

[code]

    echo "パスワード" | sudo -S apachectl start
    
[/code]

これを回避するために、

  * 事前にパスワードを確かめる方法
  * sudoの失敗を検知する方法

のどちらかを教えていただけないでしょうか。


CC BY-SA 3.0
2015-07-24T10:12:23.170
12647
2015-10-22T17:11:21.357
2015-07-24T12:28:24.980
8000
9666
question
swift macos
管理者権限の必要なコマンドを Swift から実行するには？


シェルスクリプトの実行に成功したかどうかは、`terminationStatus`を調べれば分かります。  
ただ、これだけだとパスワードが間違っていたのかその後のコマンドの実行に失敗したのかが判断できません。

[code]

    let task = NSTask.launchedTaskWithLaunchPath("/bin/sh", arguments: ["-c","/AAAA.sh"])
    task.waitUntilExit()
    
    if task.terminationStatus != 0 {
        // 失敗
    }
    
[/code]

パスワードが間違っているかどうか最初に判断したいなら、先にダミーの`sudo`だけを実行して`terminationStatus`を調べるという方法でどうでしょうか？

[code]

    echo "パスワード" | sudo -S true
    
[/code]


CC BY-SA 3.0
2015-07-24T15:18:51.317
12662
2015-07-24T15:18:51.317
3639
12647
answer