0
ユーザーをシステムに自動的に追加してsambaに追加するためのHaskellプログラムを作成していますが、パスワードを尋ねています。私はと一緒にこのような目標を達成するために使用できるパラメータは見つかりませんでした。私に何ができる?ここで パスワードが必要な場合、Haskell - System.Processでエラーが発生する
は私のコードです:import System.Environment(getArgs)
import System.Process (createProcess, shell)
main = do
(user:pass:_) <- getArgs
putStrLn $ "Creating user " ++ user ++ " " ++ pass ++ "..."
callCommand $ "useradd " ++ user
callCommand $ "echo \"" ++ user ++ "\":\"" ++ pass ++ "\" | chpasswd"
putStrLn $ "User Created. Adding it to samba..."
callCommand $ "smbpasswd -a " ++ user
callCommand = createProcess . shell
結果:
-bash# runghc test.hs testUser 12345
Creating user testUser 12345...
User Created. Adding it to samba...
chpasswd: (user testUser) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user testUser) password not changed
-bash# New SMB password:
Retype new SMB password:
Failed to add entry for user testUser.
私はpass
引数はプログラム(またはを押して、自動的に入力します)に利用者から受け取ったパス、およびこのエラーを回避することはできますか?
トピックを外しています:私は 'shell'の代わりに' proc'を使います - 後者は慎重なエスケープを必要とし、非常に壊れやすく、前者は引数を取るだけです。 – chi