リモートコンピュータにSSHで接続し、bashスクリプトから新しいユーザーを作成する方法

リモートコンピュータにSSHで接続し、bashスクリプトから新しいユーザーを作成する方法

リモートコンピュータにSSH経由で接続し、adduserコマンドを実行するbashスクリプトを作成しています。これはうまくいきません。以下のコードを実行すると、adduserの--helpテキストのみが表示されます。

ssh [email protected] 'useradd $username; mkdir /home/$username;' || echo "Unable to create user on pizza.cs.fredonia.edu";;

Ubuntu14.01

答え1

二重引用符を使ってみましたか?一重引用符内で、BASHは$ username変数を拡張しません。

たとえば、$ username = bobの場合、このコマンドは変数を拡張します。

ssh user@hostname "useradd $username; mkdir /home/$username;" 

引用されたセクションは次に展開されます。

useradd bob; mkdir /home/bob;

ただし、次のように一重引用符を使用する場合:

ssh user@hostname 'useradd $username; mkdir /home/$username;'

これにより、引用された部分は変更されません。これは次のように解釈されます。

useradd $username; mkdir /home/$username;

しかし、最後に$ usernameの後には;は必要ありません。

関連情報