Page 1 of 1

sql daten per script uploaden

Posted: 2009-08-31 10:01
by 1979mark
Hi,

ich hoffe ich bin in diesem Bereich hier richtig.

Ich möchte ein kleines script erstellen
#!/bin/sh
mysql -h localhost -S /tmp/mysql5.sock -u MARKDBUSER -pMARK1111 MARKDB < data.sql
Aber wie kann ich es realisieren, das ich nach den fettgeschriebenen Dingen (user, pw und Datenbak) gefragt werde und diese dann eingeben muss.


Gruß
Mark

Re: sql daten per script uploaden

Posted: 2009-08-31 10:21
by Joe User

Re: sql daten per script uploaden

Posted: 2009-08-31 10:24
by 1979mark
HiJoe User,

vielen lieben Dank für die schnelle Antwort.
Aber ich galube ich lasse das besserr, das sieht mir zu kompliziert aus.


MArk

Re: sql daten per script uploaden

Posted: 2009-08-31 10:28
by 1979mark
Oder ist das so richtig

#!/bin/sh
echo -n "Usernamen eingeben 'var1': "
echo -n "Passwort eingeben 'var2': "
echo -n "Dtenbanknamen eingeben 'var3': "

mysql -h localhost -S /tmp/mysql5.sock -u $var2 -p$var2 $var3 < data.sql


Gruß
Mark

Re: sql daten per script uploaden

Posted: 2009-08-31 12:09
by Roger Wilco
1979mark wrote:Oder ist das so richtig
Nein. Da fehlt der Aufruf von read(1p).

Re: sql daten per script uploaden

Posted: 2009-08-31 17:26
by 1979mark
Hi,

sorry, aber könnte mir da jemand helfen, ich weiß nicht genau was ich machen muss.

Danke
Mark

Re: sql daten per script uploaden

Posted: 2009-08-31 18:15
by Roger Wilco
Das steht doch schön mit Beispiel in der Manpage zu read(1p):

Code: Select all

$ read FOO; echo "Eingabe war: $FOO"
Testeingabe
Eingabe war: Testeingabe

Re: sql daten per script uploaden

Posted: 2009-08-31 18:23
by 1979mark
Hi,

sorry das ich hier nochmals nerve aber ich versteh leider nicht wie ich den Befehl nutzen soll in meinem Beispiel.

Wäre es zuviel verlangt, wenn mir jemand das richtige script nennen kann?
#!/bin/sh
echo -n "Usernamen eingeben 'var1': "
echo -n "Passwort eingeben 'var2': "
echo -n "Dtenbanknamen eingeben 'var3': "

mysql -h localhost -S /tmp/mysql5.sock -u $var2 -p$var2 $var3 < data.sql

Re: sql daten per script uploaden

Posted: 2009-08-31 21:34
by Joe User
Quick&Dirty, eventuelle Bugs bitte selbst fixen:

Code: Select all

#!/bin/bash

LANG=C LC_ALL=C TZ=UTC0
export LANG LC_ALL TZ

function read_prompt() {
  read -p "$(echo -en "E[1;37m${1}E[0m " >&2)" "${2:-REPLY}"
  until [ -z $(echo "${2:-REPLY}" | tr -d '[[:print:]]') ]
  do
    show_warn "non-printable char(s) detected! Please retry...n"
    read_prompt "${1}" "${2}"
  done
  return
}

function read_passwd() {
  read -s -p "$(echo -en "E[1;37m${1}E[0m " >&2)" "${2:-REPLY}"
  until [ -z $(echo "${2:-REPLY}" | tr -d '[[:print:]]') ]
  do
    show_warn "non-printable char(s) detected! Please retry...n"
    read_prompt "${1}" "${2}"
  done
  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
}

function root_only() {
  if [ "${UID}" != "0" ] || [ "${EUID}" != "0" ]
  then
    show_error "You must be root to run this script!n"
  fi
  return
}

function import_db() {
  local username password database
  show_info "Please enter your database usernamen"
  read_prompt "Username:"
  if [ -z "${username}" ]
  then
    show_error "aborting...n"
    exit 1
  fi
  show_info "Please enter your database passwordn"
  read_passwd "Password:"
  if [ -z "${password}" ]
  then
    show_error "aborting...n"
    exit 1
  fi
  show_info "Please enter the database to importn"
  read_prompt "Database:"
  if [ -z "${database}" ]
  then
    show_error "aborting...n"
    exit 1
  fi
  mysql -u${username} -p${password} ${database} < ${database}.sql
  return
}

root_only
import_db

exit 0
Als Hausaufgabe und Entschädigung für meine Mühen, darfst Du dieses Script mit vernünftigen Kommentaren versehen und zur weiteren Kontrolle hier posten, danke.

Re: sql daten per script uploaden

Posted: 2009-08-31 23:30
by 1979mark
Hi,

danke Dir.

ISt es falsch wenn ich dass so löse?
echo "Host eingeben (localhost): "
read localhost

echo "Socket eingeben (/tmp/mysql5.sock): "
read socket

echo "Usernamen eingeben: "
read username

echo "Passwort eingeben: "
read passwort

echo "Datenbanknamen eingeben: "
read datenbankname

echo $localhost $socket $username $passwort $datenbankname

mysql -h $localhost -S $socket -u $username -p$passwort $datenbankname < data.sql

Re: sql daten per script uploaden

Posted: 2009-09-01 00:33
by Joe User
1979mark wrote:ISt es falsch wenn ich dass so löse?
Nicht zwingend falsch, aber sicherheitstechnisch noch bedenklicher, als mein Quick&Dirty-Script...