Problem mit Script

Bash, Shell, PHP, Python, Perl, CGI
jns991
Posts: 2
Joined: 2009-11-16 23:23

Problem mit Script

Post by jns991 » 2009-11-16 23:32

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

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Problem mit Script

Post by Roger Wilco » 2009-11-17 11:27

Dir fehlen mindestens 2 schließende double quotes nach echo...

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Problem mit Script

Post by Joe User » 2009-11-17 11:40

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
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

jns991
Posts: 2
Joined: 2009-11-16 23:23

Re: Problem mit Script

Post by jns991 » 2009-11-17 12:27

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?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Problem mit Script

Post by Joe User » 2009-11-17 13:05

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.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.