Page 1 of 1

Problem mit Script

Posted: 2009-11-16 23:32
by jns991
Guten Abend,

ich wollte mir ein Script anlegen, mit dem ich FTP user hinzufügen kann.
Die FTP user sollen in ihr eigenes verzeichniss gesperrt sein und kein shell zugriff haben. klappt auch soweit...
aber irgendwie will mein script nicht so wirklich^^
ich bin jetz auch kein linux spezialist, kenne mich auch nicht mit dem syntax und so aus.
habe nen bisschen c programmiert und so. daher nen bisschen programmier erfahrung.

Mein Code:

Code: Select all


#!/bin/sh -x
echo -n "Name: "
read name
echo "-----------------"

echo -n "Eigenes Passwort? (j/n)
read answer

if [ "$answer" = "j" ]; then
  read PASSWORD
  mkdir /var/www/$name
  useradd $name -s /bin/false -d /var/www/$name
  usermod -p `perl -e "print crypt('$PASSWORD','a7');"` $name
  chown -R $name /var/www/$name


if [ "$answer" = "n" ]; then
  $PASSWORD="$(pwgen 7 1)"
  mkdir /var/www/$name
  useradd $name -s /bin/false -d /var/www/$name
  usermod -p `perl -e "print crypt('$PASSWORD','a7');"` $name
  chown -R $name /var/www/$name

else
  echo "ERROR"

fi

echo "User $name wurde mit dem Passwort $PASSWORD angelegt!

und das kommt dann bei der Ausgabe raus:

Code: Select all

Name: jns991
-----------------
Eigenes Passwort? (j/n)
read answer

if [  = j ]; then
  read PASSWORD
  mkdir /var/www/jns991
  useradd jns991 -s /bin/false -d /var/www/jns991
  usermod -p a7Sp95GqsDaH6 jns991
  chown -R jns991 /var/www/jns991


if [  = n ]; then
  =phamaul
  mkdir /var/www/jns991
  useradd jns991 -s /bin/false -d /var/www/jns991
  usermod -p a7Sp95GqsDaH6 jns991
  chown -R jns991 /var/www/jns991

else
  echo ERROR

fi

echo User jns991 wurde mit dem Passwort angelegt!vs24128:/home/Scripts#

der überspringt einfach die abfrage ob mein ein eigenes passwort setzen will, und dann funktioniert das alles irgendwie nicht mehr...

sogar

Code: Select all

echo User jns991 wurde mit dem Passwort angelegt!vs24128:/home/Scripts#
das ist nicht mehr wirklich richtig... eigentlich muss docch die befehlszeile inna nächsten zeile sein^^
bin grad voll am verzweiflen :-/
leg mich jetzt auch erstmal schlafen.

Mfg
jns991

Re: Problem mit Script

Posted: 2009-11-17 11:27
by Roger Wilco
Dir fehlen mindestens 2 schließende double quotes nach echo...

Re: Problem mit Script

Posted: 2009-11-17 11:40
by Joe User
Erweiterte Fassung zum Lernen:

Code: Select all

#!/bin/bash
TZ=UTC0;LC_ALL=C
shopt -s extglob

function read_prompt() {
  read -p "$(echo -en "\E[1;37m${1}\E[0m " >&2)" "${2:-REPLY}"
  return
}

function read_passwd() {
  read -s -p "$(echo -en "\E[1;37m${1}\E[0m " >&2)" "${2:-REPLY}"
  return
}

function show_text() {
  echo -en "\E[1;37m${1}\E[0m" >&2
  return
}

function show_info() {
  echo -en "\E[1;32m${1}\E[0m" >&2
  return
}

function show_warn() {
  echo -en "\E[1;33m${1}\E[0m" >&2
  return
}

function show_error() {
  echo -en "\E[1;31m${1}\E[0m" >&2
  return
}

read_prompt "Name:" name
show_text "\n-----------------\n"

read_prompt "Eigenes Passwort? [j/n]" answer

if [ "$answer" = "j" ]; then
  read_passwd "Passwort:" PASSWORD
elif [ "$answer" = "n" ]; then
  PASSWORD="$(pwgen 7 1)"
else
  show_error "\nERROR\n"
  exit 1
fi

mkdir -p /var/www/$name
useradd $name -s /bin/false -d /var/www/$name
usermod -p `perl -e "print crypt('$PASSWORD','a7');"` $name
chown -R $name /var/www/$name

show_info "\nUser $name wurde mit dem Passwort $PASSWORD angelegt!\n"

exit 0
Hausaufgabe: Baue eine Plausibilitätsprüfung der eingegebenen Zeichen ein.
Lesestoff: http://tldp.org/LDP/abs/html/abs-guide.html

Re: Problem mit Script

Posted: 2009-11-17 12:27
by jns991
ALTA du freak^^ das is ja sogar farbig und so :D

jetz muss ich es erstmal verstehen :)
damit werd ich mir den nächsen abend umme Ohren schlagen^^
und ich soll da jetzt noch ne plausibilitätsprüfung einbauen?

Re: Problem mit Script

Posted: 2009-11-17 13:05
by Joe User
jns991 wrote:ALTA du freak^^ das is ja sogar farbig und so :D

jetz muss ich es erstmal verstehen :)
damit werd ich mir den nächsen abend umme Ohren schlagen^^
Zum Verstehen siehe Lesestoff.
jns991 wrote:und ich soll da jetzt noch ne plausibilitätsprüfung einbauen?
Ja, als Hausaufgabe, damit ich mir meine Mühe nicht umsonst gemacht habe und Du und andere nicht nur ein buntes sondern auch sicheres Script bekommen.