• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

chown aus Skript nicht möglich

Hallo zusammen,
Ich habe Probleme mit folgendem Skript (aus smstools)
Code:
smsd_user="smsd"
# Will need echo which accepts -n argument:
ECHO=echo
case `uname` in
  SunOS)
    ECHO=/usr/ucb/echo
    ;;
esac

if ! [ -z "$KEYS" ]; then
  printf "Key: "
  read KEY
  if [ -z "$KEY" ]; then
    echo "Key required, stopping."
    exit 1
  fi
  KEY=`$ECHO -n "$KEY" | md5sum | awk '{print $1;}'`
  if ! echo "$KEYS" | grep "$KEY" >/dev/null; then
    echo "Incorrect key, stopping."
    exit 1
  fi
fi

DEST=$1
TEXT=$2

if [ -z "$DEST" ]; then
  printf "Destination(s): "
  read DEST
  if [ -z "$DEST" ]; then
    echo "No destination, stopping."
    exit 1
  fi
fi

if [ -z "$TEXT" ]; then
  printf "Text: "
  read TEXT
  if [ -z "$TEXT" ]; then
    echo "No text, stopping."
    exit 1
  fi
fi

if [ $# -gt 2 ]; then
  n=$#
  while [ $n -gt 1 ]; do
    destinations="$destinations $1"
    shift
    n=`expr $n - 1`
  done
  TEXT=$1
else
  destinations=$DEST
fi

echo "-- "
echo "Text: $TEXT"

ALPHABET=""
if which iconv > /dev/null 2>&1; then
  if ! $ECHO -n "$TEXT" | iconv -t ISO-8859-15 >/dev/null 2>&1; then
    ALPHABET="Alphabet: UCS"
    TEXT=`$ECHO -n "$TEXT" | iconv -t UNICODEBIG`
  fi
fi

owner=""
if [ -f /etc/passwd ]; then
  if grep $smsd_user: /etc/passwd >/dev/null; then
    owner=$smsd_user
  fi
fi

for destination in $destinations
do
  echo "To: $destination"

  TMPFILE=`mktemp /tmp/smsd_XXXXXX`

  $ECHO "To: $destination" >> $TMPFILE
  [ -n "$ALPHABET" ] && $ECHO "$ALPHABET" >> $TMPFILE
  $ECHO "" >> $TMPFILE
  $ECHO -n "$TEXT" >> $TMPFILE

  if [ "x$owner" != x ]; then
    chown $owner $TMPFILE
  fi

  FILE=`mktemp /var/spool/sms/outgoing/send_XXXXXX`
  mv $TMPFILE $FILE
done
Beim Aufruf passiert folgendes
Code:
alex@Taomon:~/bash-skripte$ bash +  ./sendsms 
Destination(s): Telefonnr.
Text: Hallo Conny. Die ist der 2.Test Alex
-- 
Text: Hallo Conny. Die ist der 2.Test Alex
To: Telefonnr.
chown: Ändern des Eigentümers von „/tmp/smsd_wmiYb1“: Die Operation ist nicht erlaubt
Erst habe ich dem Skript verschiedene Eigentümer und Gruppen mit gegeben.
Code:
alex@Taomon:~/bash-skripte$ ls -al sendsms 
-rwxrwxr-x 1 alex smsd 2261 10. Mai 16:11 sendsms
Bei folgenden Gruppen bin ich Mitglied:
Code:
alex@Taomon:~/bash-skripte$ groups
alex dialout cdrom floppy audio dip video plugdev netdev bluetooth scanner vboxusers smsd
Leider habe ich vom Skripten nicht viel Ahnung. :eek:ps: Wenn jemand so freundlich wäre mal drüber zuschauen, wäre das echt Klasse da ich zurzeit im Krankenhaus bin und mein Handy mich im Stich läßt.
Betriebssystem ist Debian 6.0.7 64Bit
 
Ohne das Skript jetzt groß angeschaut zu haben, aber "chown" darf doch eigentlich nur root ausführen.
 
A

Anonymous

Gast
Wo hast du den dieses Script gefunden, scheinbar hast du es nicht selbst geschrieben und ich kann mir nicht vorstellen, das so ein lausig geschriebenes Script offizieller Bestandteil eines Debian Paketes sein soll.

Dieses Script so wie es geschrieben wurde kann nur als User root funktionieren.

robi
 
robi schrieb:
Wo hast du den dieses Script gefunden, scheinbar hast du es nicht selbst geschrieben und ich kann mir nicht vorstellen, das so ein lausig geschriebenes Script offizieller Bestandteil eines Debian Paketes sein soll.
robi
Ist aber so. Das Skript lag unter /usr/share/doc/smstools/examples. Ich bin noch nicht so alt und tütelich, das ich irgendwelche Skripte auf meinen Rechner lade und ausführe. ;)
robi schrieb:
Dieses Script so wie es geschrieben wurde kann nur als User root funktionieren.
Okay, das ist doof. Dann muß ich noch mal tiefer im Internet wühlen.

Danke erstmal wirrwarr
 
spoensche schrieb:
Was hast du den genau vor? Willst du nur SMS von der Konsole aus verschicken?
Empfangen würde ich auch gern welche. :D Und bis jetzt bin ich bei meiner Suche nur auf die smstools gestoßen in Verbindung mit UMTS-Sticks.

Tschau wirrwarr
 
wirrwarr schrieb:
spoensche schrieb:
Was hast du den genau vor? Willst du nur SMS von der Konsole aus verschicken?
Empfangen würde ich auch gern welche. :D Und bis jetzt bin ich bei meiner Suche nur auf die smstools gestoßen in Verbindung mit UMTS-Sticks.

Tschau wirrwarr

Die smstools funktionieren auch einwandfrei. Vergiss mal das Script aus dem example Verzeichnis und verschicke einfach eine Test-SMS mit:
Code:
sudo sendsms 0049170123456 testsms

Du hast die smstools richtig konfiguriert, oder? Poste mal bitte deine /etc/smsd.conf.
 
spoensche schrieb:
Code:
sudo sendsms 0049170123456 testsms
Du hast die smstools richtig konfiguriert, oder? Poste mal bitte deine /etc/smsd.conf.
[verschämt nachfrag]meinst Du jetzt das Skript oder ein Programm sendsms?[/verschämt nachfrag] :eek:ps:
Hier die conf
Code:
devices = GSM1
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
incoming = /var/spool/sms/incoming
logfile = /var/log/smstools/smsd.log
infofile = /var/run/smstools/smsd.working
pidfile = /var/run/smstools/smsd.pid
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent
stats = /var/log/smstools/smsd_stats
#loglevel = 7
#delaytime = 10
#errorsleeptime = 10
#blocktime = 3600
#stats = /var/log/smsd_stats
#stats_interval = 3600
#stats_no_zeroes = no
#checkhandler = /usr/local/bin/smscheck
receive_before_send = no
# autosplit 0=no 1=yes 2=with text numbers 3=concatenated
autosplit = 3
# store_received_pdu 0=no, 1=unsupported, 2=unsupported and 8bit, 3=all
#store_received_pdu = 1
#validity = 255
#decode_unicode_text = no
#internal_combine = no
# You can specify here an external program that is started whenever an alarm occurs.
# alarmhandler = /path/to/an/alarmhandler/script
# Specifies what levels start an alarmhandler. You can use value between 2 and 5.
# alarmlevel = 4
# eventhandler = @EVENTHANDLER@
#blacklist = /etc/smstools/blacklist
#whitelist = /etc/smstools/whitelist

#[queues]
# Commented lines are examples for germany
# D1 = /var/spool/sms/D1
# D2 = /var/spool/sms/D2
# O2 = /var/spool/sms/O2
# EPLUS = /var/spool/sms/EPLUS
# QUAM = /var/sppol/sms/QUAM
# MOBILCOM = /var/spool/sms/MOBILCOM
#OTHER = /var/spool/sms/OTHER

#[provider]
# Commented lines are examples for germany
# D1 = 49160, 49170, 49171, 49175, 49151
# D2 = 491520, 49162, 49172, 49173, 49174
# O2 = 49176, 49179, 49159
# EPLUS = 49163, 49177, 49178, 49157
# QUAM = 49150
# MOBILCOM = 49156
#OTHER = 0,1,2,3,4,5,6,7,8,9

#[GSM1]
# init = ATE0+CPMS="SM"+CNMI=2,0,0,2,1
# # Windows: /dev/com1, Solaris: /dev/cua/a, Linux /dev/ttyS0
# device = /dev/ttyS0
# incoming = yes
# queues = OTHER
# You don't need a PIN for mobile phones
# pin = 1111
# mode = new
# smsc = 491722270000
# baudrate = 19200
# rtscts = yes
# cs_convert = yes
# report = no
# memory_start = 1
# primary_memory = memory name
# secondary_memory = memory name
# secondary_memory_max = number
# pdu_from_file = /var/spool/sms/GSM1-PDU
# sending_disabled = no
# decode_unicode_text = no
# internal_combine = no
#
#[GSM2]
#init = ATE0
# Windows: /dev/com2, Solaris: /dev/cua/b, Linux /dev/ttyS1
#device = /dev/ttyS1
#incoming = yes
#queues = OTHER
#You don't need a PIN for mobile phones
#pin = 2222
#mode = new
#smsc = 491710760000
#baudrate = 19200
#rtscts = yes
#cs_convert = yes
#report = no
#memory_start = 1
#primary_memory = memory name
#secondary_memory = memory name
#secondary_memory_max = number
#pdu_from_file = /var/spool/sms/GSM2-PDU
#sending_disabled = no
#decode_unicode_text = no
#internal_combine = no
[GSM1]
#init =
device = /dev/gsmmodem 
loglevel = 7
incoming = yes
#pin = 
baudrate = 19200
Vielen Dank sagt

wirrwarr
 
Also sendsms ist ein Script, aber nicht das aus dem examples Verzeichnis.

Du hast in deiner Konfiguration einen Fehler. Die Variable loglevel ist global und nicht modemspezifisch. Ändere das mal, aber setze auch das Loglevel global auf 7.
Existiert auch die Gerätedatei /dev/gsmmodem? Wenn nicht,dann mach folgendes:

1. Modem vom USB-Anschluss abziehen
2. Modem wieder anstöpseln
3.
Code:
dmesg | tail
ausführen und nachsehen, welche Gerätedatei für das Modem angelegt.
4. Die korrekte Gerätedatei in der smsd.conf im Abschnitt [GSM1] einfügen und die smstools neu starten
 
Also sendsms ist ein Script, aber nicht das aus dem examples Verzeichnis.

Du hast in deiner Konfiguration einen Fehler. Die Variable loglevel ist global und nicht modemspezifisch. Ändere das mal, aber setze auch das Loglevel global auf 7.
Existiert auch die Gerätedatei /dev/gsmmodem? Wenn nicht,dann mach folgendes:

1. Modem vom USB-Anschluss abziehen
2. Modem wieder anstöpseln
3.
Code:
dmesg | tail
ausführen und nachsehen, welche Gerätedatei für das Modem angelegt.
4. Die korrekte Gerätedatei in der smsd.conf im Abschnitt [GSM1] einfügen und die smstools neu starten
 
spoensche schrieb:
Also sendsms ist ein Script, aber nicht das aus dem examples Verzeichnis.
Code:
sendsms bash: sendsms: Kommando nicht gefunden
Nicht als User noch als root.
Code:
alex@Taomon:~$ apt-file search sendsms
gnokii-cli: /usr/bin/sendsms
gnokii-cli: /usr/share/man/man1/sendsms.1.gz
gsm-utils: /usr/bin/gsmsendsms
gsm-utils: /usr/share/man/man8/gsmsendsms.8.gz
kannel-extras: /usr/lib/kannel/checks/check_sendsms.sh
kannel-extras: /usr/share/kannel/contrib/php-admin/sendsms.php
kannel-extras: /usr/share/kannel/contrib/sendsms
kannel-extras: /usr/share/kannel/contrib/web/sendsms.php
python-gammu-doc: /usr/share/doc/python-gammu-doc/examples/sendsms.py
smstools: /usr/share/doc/smstools/examples/scripts/sendsms
:???:
spoensche schrieb:
Existiert auch die Gerätedatei /dev/gsmmodem?
Ja, sie ist ein Link die durch eine Udev-Regel(Name vergessen)auf /dev/ttyUSB* gelegt wird. Je nachdem als wievieltes Gerät ich den Stick anschließe. Deshalb habe ich auch diese Datei in die Conf eingetragen.
spoensche schrieb:
Du hast in deiner Konfiguration einen Fehler. Die Variable loglevel ist global und nicht modemspezifisch. Ändere das mal, aber setze auch das Loglevel global auf 7.
Code:
root@Taomon:/home/alex# /etc/init.d/smstools restart
Restarting SMS Daemon: (waiting...failed)Timeout occured, killing smsd hardly.
Selbes Problem hatte ich gestern beim runterfahren.
 
Hallo Spoensche,
in den letzten 3 Tagen hatte ich einige Untersuchungstermine und Therapien. Danke erst mal für Dein Engagment. Hier nun die smsd.log http://pastebin.com/UxPNqQyC War etwas lang.
Einen schönen Frühlingstag wünscht euch

wirrwarr :irre:
 
Der Fehler
Code:
<- +CMS ERROR: 500  (Unknown error)

tritt in Kombination mit der Hanynummer auf. Dem Log nach zu Urteilen hast du die Empfänger Nummer nicht im internationalen Format angegeben, also 0049160......

Die Angabe des SMSC (Nummer der Kurzmitteilungszentrale) kann auch hilfreich sein.
Die Zugriffsrechte des Verzeichnisses /var/spool/sms/outgoing stimmen nicht. Die müsstest du also mal überprüfen.

Was für ein Modem verwendest du?
 
Okay, dann fang'mer mal an.
spoensche schrieb:
Dem Log nach zu Urteilen hast du die Empfänger Nummer nicht im internationalen Format angegeben, also 0049160......
Ich wußte gar nicht, daß es so etwas gibt. Sobald meine Freundin von Ihrem Krankenhaus Aufenthalt zurück ist probiere ich das aus.
spoensche schrieb:
Die Angabe des SMSC (Nummer der Kurzmitteilungszentrale) kann auch hilfreich sein.
Google wird dafür mein Freund sein.
spoensche schrieb:
Die Zugriffsrechte des Verzeichnisses /var/spool/sms/outgoing stimmen nicht. Die müsstest du also mal überprüfen.
Code:
alex@Taomon:~$ ls -al /var/spool/sms
insgesamt 28
drwxrwsr-t 7 smsd smsd 4096  9. Mai 17:22 .
drwxr-xr-x 9 root root 4096  9. Mai 17:22 ..
drwxrwsr-t 2 smsd smsd 4096 21. Mai 11:20 checked
drwxrwsr-t 2 smsd smsd 4096 21. Mai 11:20 failed
drwxrwsr-t 2 smsd smsd 4096 21. Mai 11:20 incoming
drwxrwsr-t 2 smsd smsd 4096 21. Mai 13:05 outgoing
drwxrwsr-t 2 smsd smsd 4096 21. Mai 11:20 sent
Ehrlich ich sehe den Fehler nicht :eek:ps: Wenn ich allerding tiefer in die Verzeichnisstruktur gehe
Code:
alex@Taomon:~$ ls -al /var/spool/sms/outgoing/
insgesamt 64
drwxrwsr-t 2 smsd smsd 4096 21. Mai 13:10 .
drwxrwsr-t 7 smsd smsd 4096  9. Mai 17:22 ..
-rw------- 1 alex alex   43 12. Mai 11:22 send_2wVPsr
-rw------- 1 alex root   35 19. Mai 13:13 send_5LVTDC
-rw------- 1 alex alex   52 10. Mai 16:14 send_C9YHJ4
-rw------- 1 alex alex   26 12. Mai 13:23 send_chLMBm
-rw------- 1 alex alex   34 17. Mai 11:13 send_f2dk0H
-rw------- 1 alex alex   39 10. Mai 16:52 send_JRzoEx
-rw------- 1 alex alex   81 11. Mai 11:40 send_LLYlLD
-rw------- 1 alex root   34 17. Mai 11:13 send_n2WDqU
-rw------- 1 alex alex   54 10. Mai 17:28 send_qLO8IE
-rw------- 1 alex alex   37 12. Mai 13:11 send_RlciHl
-rw------- 1 alex alex   34 17. Mai 11:11 send_RN0R03
-rw------- 1 alex alex   27 10. Mai 17:04 send_TTqQJ3
-rw------- 1 alex alex   42 11. Mai 11:50 send_WAyQ3b
-rw------- 1 alex root   34 17. Mai 11:09 send_XgYD5r
alex@Taomon:~$
In den anderen Ordnern sind die Dateirechte auf smsd.smsd gesetzt.. :???:
Das Modem ist eine Huawei Modem. E220.
Vielen lieben Dank
wirrwarr
 
Hier ein kleines Update. Mittlerweile kann ich SMS empfangen. Meine versendeten SMS verschwinden immer noch in ein Datenloch. :zensur: Egal ob als user oder root; egal welche Schreibweise der Telefonnummer. Als root erhalte ich keine Fehlermeldung.
Weiß vielleicht jemand ein anderes Programm?

Grüße aus dem verregneten Franken
wirrwarr
 
Oben