2016-04-10 46 views
0

我的目標是創建一個bash腳本,可以將新用戶添加到Ec2並提供對ssh密鑰的訪問,但是我有一個問題。Bash腳本 - 傳遞沒有價值

這是我當前的腳本,只要需要生成私鑰/公鑰就停止腳本,因爲它要求輸入密碼。我怎樣才能配置我的腳本只是按下輸入?

#!/bin/bash 

username=$1 

ssh-keygen -b 1024 -f $username -t dsa 
chmod 600 $username.pub 
useradd $username 
mkdir /home/$username/.ssh 
chmod 700 /home/$username/.ssh 
chown ball:ball /home/$username/.ssh 
cat ball.pub >> /home/$username/.ssh/authorized_keys 
chown 600 /home/.ssh/$username/authorized_keys 
chown ball:ball /home/$username/.ssh/authorized_keys 

[[email protected] /]# ssh-keygen -b 1024 -f ball -t dsa 
Generating public/private dsa key pair. 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ball. 
+2

你可能想了解[分詞](HTTP://mywiki.wooledge.or g/WordSplitting)如果'$ username'包含一個空格,你的代碼將會中斷多個地方 – andlrc

+0

這看起來有點像[XY問題](http://xyproblem.info)。 [你可以使用參數'-N''''](http://stackoverflow.com/q/10767488/1695906)告訴'ssh-keygen'你不想使用釋義。通常最好詢問實際問題,而不是嘗試解決方案。 –

+0

你的腳本也是非常危險的 - 你至少應該測試是否實際通過了「$ 1」,所以你沒有通過這個過程破壞浩劫。就像'if [[「$ 1」==「」]];然後回顯「用法:$ 0 username」>&2;出口1; fi;' –

回答

0

可以通過管道空行ssh-keygen

ssh-keygen -b 1024 -f ball -t dsa <<< '' 

printf "" | ssh-keygen -b 1024 -f ball -t dsa 

或閱讀/dev/null

ssh-keygen -b 1024 -f ball -t dsa < /dev/null 
+0

@JoneJamson用'-x'標誌運行可能會告訴你什麼是錯誤的:'bash -x my_script.sh' – andlrc

+0

嗨,好吧,你可以看看這個http://pastebin.com/1FBj8T8H。我壓力很大 –

+0

@JoneJamson再次閱讀我關於'-x'的評論。 – andlrc