2016-04-10 20 views
0

Benim amacına geçen EC2 yeni kullanıcı ekleme ve SSH anahtarlarına erişim vermek ama bir sorun abit yaşıyorum bir bash komut dosyası oluşturmaktır.Bash Scripting - hiçbir değer

Bu benim şimdiki senaryo olduğunu ve bunun parola sorar çünkü özel/kamusal anahtar oluşturmak için gereken her komut durdurur. Komutumu yalnızca enter tuşuna basmak için nasıl yapılandırabilirim?

#!/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

Yaklaşık okumak isteyebilirsiniz [sözcüklere ayırma ] (http: //mywiki.wooledge.or g/WordSplitting) Eğer '$ username' bir boşluk içeriyorsa kodunuz çoğalır. – andlrc

+0

Bu biraz [XY sorusu] (http://xyproblem.info) gibi görünüyor. [Sadece ssh-keygen'i söyleyemezsin, '-N' ['] argümanını kullanarak bir açıklama istemezsin (http://stackoverflow.com/q/10767488/1695906). Denenen çözümden ziyade asıl sorun hakkında soru sormak en iyisidir. –

+0

Senaryonuz da oldukça tehlikelidir - en azından 1 $ 'lık gerçekten geçip geçmediğini test etmelisiniz, bu yüzden süreçten zarar görmediniz. [["$ 1" == ""]] gibi bir şey; sonra echo "kullanım: 0 $ kullanıcı adı"> & 2; çıkış 1; fi; ' –

cevap

0

yapabilirsiniz ssh-keygen için boru boş satırlar: /dev/null den

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

veya

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

veya okuma:

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

@JoneJamson' -x' bayrağıyla Koşu sorununun ne söyleyebilir: 'bash -x my_script.sh' – andlrc

+0

Merhaba, tamam u buna bir göz http://pastebin.com/1FBj8T8H olabilir. Stresli oldum –

+0

@JoneJamson '-x' ile ilgili yorumumu tekrar oku. – andlrc