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...