• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af peque | 23.06.2010 08:50

Afsending af SMS

Hjælp generelt
Hey Forum.
Jeg har et lille sjovt problem på mit arbejde - som jeg simpåelthen ikke kan få op i en højere enhed.

Jeg har et modem tilkoblet med simkort - der skal bruges til afsendelse af SMS. Jeg har derfor installeret gsm-utils på en Debian 64bit.

For at sende en SMS til mig selv kører jeg følgende kommando:

gsmsendsms -d /dev/ttyS0 4520856076 "Testing"

Dette virker fint og upåklageliggt.
Nu er det således at det skal fungere i firmaets system - så jeg har lavet et lille script der skulle samle dette op og sende SMS:


#!/bin/bash
# This script is made for MERA sending SMS using a locally
# mounted modem on /dev/ttyS0 for using contact to salespersonal
################################################################
#
# $1 = TLF of the reciever
#
# $2 = TLF of the sender
#
# $3 = message to the reciever
#
# EXIT CODE 1 = Not enough params
# EXIT CODE 2 = Error in Sending SMS
#
# mdr = present month
# aar = present year
#
# Made 04July - 2008
# PBJ
#
#*******************************************************#
# History version
#* version 0.1:
# Made the script and testing the output
#
#*******************************************************#

# This script is needed to be called with 3 parameters
MINPARAMS=3

# Cutting the month and year from Date
mdr=`date|tr -s ' '|cut -d' ' -f2`
aar=`date|tr -s ' '|cut -d' ' -f6`

text1="afsender er $2"

# Sending all details to smslog
echo sendsms $1 $2 $3 >> /tmp/smslog

# Testing the connection for errors:
if test $# -lt 3
then
exit 1
fi

# Calling the gsmsendsms command
gsmsendsms -d /dev/ttyS0 $1 "$text1 $3"
RC=$?

case $RC in
0)
echo "SENDSMS: `date` Modtager NR: $1 Fra: $2 ......SENT $3" >> /var/log/sms/smslog-$mdr-$aar
exit $RC
;;
*)
echo "SENDSMS: `date` $? Modtager NR: $1 Fra $2 ...... ERROR $3 (Error=$RC)" >> /var/log/sms/smslog-$mdr-$aar
exit $RC
;;
esac

Hvorfor stopper denne process totalt - og syntes på ingen måde jeg nogle steder kan se nogle fejl der går galt i deres logfiler - så hmmmm aner reelt ikke hvad der går galt! Men er der nogle af jer kloge hoveder der kan se dette !

På Forhånd tak
Per

  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer5

# 1

15 år siden

Permalink

Indsendt af mich den 23. juni 2010 kl. 15:16

Permalink

Re: Afsending af SMS

Det er svært at vide, hvad der går galt, når du tilbageholder oplysninger. Det er ikke nok, at skrive, at det ikke virker.
Jeg kan kun gætte på, at sms'en ikke når frem, og at logfilerne ser ud som du forventer, når det går godt. ??
Hvor stopper det og hvordan? Hvad er output, hvis der er noget?
Lav evt. en verbose eller debug switch, så scriptet skriver alt hvad det laver undervejs.

Det eneste jeg umiddelbart studsede over, var

# Calling the gsmsendsms command
gsmsendsms -d /dev/ttyS0 $1 "$text1 $3"

hvor jeg nok ville have skrevet

# Calling the gsmsendsms command
gsmsendsms -d /dev/ttyS0 "$1" "$text1 $3"

Jeg er ingen scripthaj, så jeg ved ikke, om det gør nogen forskel.
  • Log ind eller opret dig for at tilføje kommentarer

# 2

15 år siden

Permalink

Indsendt af peque den 23. juni 2010 kl. 16:03

Permalink

TJa.
jeg kan ikke rigtig

TJa.
jeg kan ikke rigtig sige andet end selve scriptet kører reelt godt nok - Sms når frem - også 2gange i træk - nogle gange 4!
Pludselig stopper dette og holder op og stopper desideret i linien....

gsmsendsms -d /dev/ttyS0 4520856076 "Testing"


den exitter ikke linien eller noget andet. Nu har jeg prøvet med 3 forskellige modems, og 2 forskellige simkort. Det har ligget i en alm. telefon ved siden af antenen og 88% signal, og har ikke mistet det i en halv time ca.
**********************************
Jeg ville rigtig gerne give logfiler på hvad det er der går galt, men jeg kan INTET finde omkring hvad der sker med modemet.
Som sagt det eneste jeg har installeret er gsm-utils - som er installeret via pakkesystemet.
Jeg har greppet igennem samtlige logfiler - hvor dmesg viser dette :

[ 1.346087] hpet_resources: 0xfed00000 is busy
[ 1.346087] Linux agpgart interface v0.103
[ 1.346087] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
[ 1.346087] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 1.348046] pnp: the driver 'serial' has been registered
[ 1.348046] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 1.348046] serial 00:08: driver attached
[ 1.348046] ACPI: PCI Interrupt 0000:0a:02.0[A] -> GSI 96 (level, low) -> IRQ 96
[ 1.348046] 0000:0a:02.0: ttyS1 at I/O 0xbce0 (irq = 96) is a 16550A
[ 1.348046] 0000:0a:02.0: ttyS2 at I/O 0xbce8 (irq = 96) is a 16550A
[ 1.348071] brd: module loaded

og syslog

Jun 23 15:45:01 insatech /USR/SBIN/CRON[22967]: (root) CMD (if [ -x /usr/bin/gsmsmsrequeue ]; then /usr/bin/gsmsmsrequeue; fi)


jeg har hentet wvdial og testet på denne:

Editing `/etc/wvdial.conf'.

Scanning your serial ports for a modem.

ttyS0<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyS0<*1>: ATQ0 V1 E1 -- OK
ttyS0<*1>: ATQ0 V1 E1 Z -- OK
ttyS0<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyS0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyS0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyS0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyS0<*1>: Modem Identifier: ATI -- 28642
ttyS0<*1>: ATI1 -- Elite 2864I DSS1: V 2.12
ttyS0<*1>: Speed 19200: AT -- OK
ttyS0<*1>: Speed 38400: AT -- OK
ttyS0<*1>: Speed 57600: AT -- OK
ttyS0<*1>: Speed 115200: AT -- OK
ttyS0<*1>: Max speed is 115200; that should be safe.
ttyS0<*1>: AT&O2B40 -- OK


Som du nok kan se er der ikke meget at give af - og kan faktisk ikke se hvordan man skal debugge på daemon - når jeg ikke lige kan for noget verbose ud af den:

# gsmsendsms --help
gsmsendsms: [-b baudrate][-c concatenatedID][-C sca][-d device][-h][-I init string]
[-t][-v][-X] phonenumber [text]

-b, --baudrate baudrate to use for device (default: 38400)
-c, --concatenate ID for concatenated SMS messages
-C, --sca SMS service centre address
-d, --device sets the destination device to connect to
-h, --help prints this message
-I, --init device AT init sequence
-r, --requeststat request SMS status report
-t, --test convert text to GSM alphabet and vice
versa, no SMS message is sent
-v, --version prints version and exits
-X, --xonxoff switch on software handshake

phonenumber recipient's phone number
text optional text of the SMS message
if omitted: read from stdin



Så det er mere - har andre oplevet dette - skal daemonen bare dø ??? Kan ikke se den under ps -aux, så jeg er sgu ret lost efterhånden her. Kører jeg inklusiv -t som skriver test - så skriver den ingen fejl - bare teksten til console.

Så derfor ???
Bud - ideer og andre forslag er meget velkomne. :-)
  • Log ind eller opret dig for at tilføje kommentarer

# 3

15 år siden

Permalink

Indsendt af mich den 23. juni 2010 kl. 17:51

Permalink

Re: Afsending af SMS

Ok, scriptet fungerer som forventet, man af og til går det i stå på
gsmsendsms -d /dev/ttyS0 4520856076 "Testing", hvis jeg forstår dig ret.

Det kunne jo godt tyde på, at gsmsendsms er løbet ind i noget, den ikke kan komme ud af, men jeg kender ikke gsm-utils, så det kan jeg desværre ikke hjælpe dig med.

Dit eksempel med wvdial tyder på, at modemet forstår AT commands. Så kunne du jo prøve at køre det i ren tekstmode til /dev/ttyS0. Dit script bliver godt nok lidt mere omfattende, men du kan få status og fejlmeddelelser direkte fra modemet.

Skal nummeret i øvrigt ikke begynde med +45 og ikke kun 45?

  • Log ind eller opret dig for at tilføje kommentarer

# 4

15 år siden

Permalink

Indsendt af lbm den 23. juni 2010 kl. 18:24

Permalink

Re: Afsending af SMS

Alternativt kan du kigge efter en anden løsning?

Jeg benytter gammu, som modtager SMSer og ligger dem i et bestemt bibliotek. Jeg har lavet et perl script der behandler disse .txt filer, som det er der kommer ind.

Ligeledes, kan man ligge filer i et bestemt format i et andet bibliotek, og så kan gammu selv finde ud af hvad der skal ske med dem. (Denne funktion benytter jeg dog ikke)....
  • Log ind eller opret dig for at tilføje kommentarer

# 5

15 år siden

Permalink

Indsendt af dudsen den 24. juni 2010 kl. 20:09

Permalink

Re: Afsending af SMS

Hvordan kalder du scriptet altså hvor henter du dine $1 $2 og $3 variabler fra.

Det er ikke altid det er helt simpelt at kalde et bash script og hive variabler ind fra et miljø der ikke er en "interactiv komando prompt"

Jeg er heller ikke helt klar på hvad for en test

if test $# -lt 3
then
exit 1
fi

Henviser til og hvor den logger fejl udover til stderr
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

den er sjov 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

Reserve kernel og btrfs 3
En snak om Linux-kompatibel software 12
PCLinuxOS 28
"Intet realistisk alternativ" - mig i r*ven 17
Open source events i danmark? 3
Virtuel maskine? 4
Gode anmeldelser Zorin OS 17.3 8
Open Source-eksperimentet 5
Nulstilling af adgangskode 6
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !