Moin,
ich versuche eine Logmeldung aus meinem Log zu verbannen
2014.12.20 02:07:21 1: PERL WARNING: Can't exec "touch": Not a directory at ./FHEM/73_PRESENCE.pm line 624.
624: qx(touch /var/tmp/fhem-PRESENCE-cmd-lock.tmp);
fhem auf fritzbox Firmware: 103.06.01 rev27132 Freetz: devel-11617M
Presence funktioniert auch soweit....
kann mir wer ne Richtung geben!? tmp-Ordner ändern in PRESENCE!?
Hallo Rantanplan,
unter welchem user läuft denn fhem? Ich vermute, Du brauchst root, damit fhem das touch auch ausführen darf bzw. die Datei öffnen darf.
Gruß PeMue
läuft unter root...
hab auch jetzt mal den pfad in der presence geändert; gleiche Meldung... :-\
kann das was damit zu tun haben, dass ich mein Perl ersetzt habe? ->Perl ersetzt (http://forum.fhem.de/index.php/topic,21131.msg146531.html#msg146531)
hat das was mit den Libs zu tun, hab das Gefühl die sind nicht richtig eingebunden.... "libpth=/lib /usr/lib"?
Summary of my perl5 (revision 5 version 12 subversion 2) configuration:
Platform:
osname=linux, osvers=2.6.28.10, archname=mips-linux
uname='linux fritz.fonwlan.box 2.6.28.10 #5 fri nov 12 14:01:45 cet 2010 mips gnulinux '
config_args='-des'
hint=previous, useposix=true, d_sigaction=define
useithreads=undef, usemultiplicity=undef
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-fno-strict-aliasing -pipe -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccversion='', gccversion='4.4.4', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =''
libpth=/lib /usr/lib
libs=-lnsl -ldl -lm -lcrypt -lc
perllibs=-lnsl -ldl -lm -lcrypt -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2'
Characteristics of this binary (from libperl):
Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
Built under linux
Compiled at Feb 10 2011 16:33:41
%ENV:
PERL5LIB=":/var/media/ftp/Sticky8it/tools/fhem/lib/perl5/"
@INC:
/var/media/ftp/Sticky8it/tools/fhem/lib/perl5//5.12.2/mips-linux
/var/media/ftp/Sticky8it/tools/fhem/lib/perl5//5.12.2
/var/media/ftp/Sticky8it/tools/fhem/lib/perl5/
/opt/lib/perl5/site_perl/5.12.2/mips-linux
/opt/lib/perl5/site_perl/5.12.2
/opt/lib/perl5/5.12.2/mips-linux
/opt/lib/perl5/5.12.2
in meiner rc.custom steht ein export PATH="$PATH:/var/media/ftp/Sticky8it/tools/fhem/"
export PERL5LIB="$PERL5LIB:/var/media/ftp/Sticky8it/tools/fhem/lib/perl5/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/var/media/ftp/Sticky8it/tools/fhem/lib/"
das müsste es doch reissen...
Ich bin mir mittlerweile sicher, dass Perl 'nen Schlag hat;
PERL WARNING: Can't exec "lsusb": Not a directory at ./FHEM/98_autocreate.pm line 366.
PERL WARNING: Can't exec "ls": Not a directory at ./FHEM/98_autocreate.pm line 388.
beides systembefehle, die er nicht findet
366 my $lsusb = `lsusb`;
388 foreach my $dev (sort split("\n", `ls $dir`)) {
Hallo rantanplan,
was sagt denn lsusb auf der Konsole der FritzBox?
Bei mir kommt dann folgendes:
# lsusb
BUS=001
DEV=001
VID=1d6b
PID=0003
CLS=09
SCL=00
SPEED='super'
VER='3.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
BUS=001
DEV=002
VID=1a40
PID=0101
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
BUS=001
DEV=004
VID=03eb
PID=204b
CLS=02
SCL=00
SPEED='full'
VER='1.1'
ISOC=0
INUM=2
ICLS1=02
ISCL1=02
ICLS2=10
ISCL2=00
BUS=001
DEV=003
VID=0403
PID=6001
CLS=00
SCL=00
SPEED='full'
VER='2.0'
ISOC=0
INUM=1
ICLS1=255
ISCL1=255
Wenn das bei Dir nicht geht, hat die Firmware Deiner FritzBox ein Problem ...
Gruß PeMue
lsusb liefert:
BUS=002
DEV=001
VID=1d6b
PID=0002
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
BUS=002
DEV=002
VID=090c
PID=1000
CLS=00
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=08
ISCL1=06
BUS=001
DEV=001
VID=1d6b
PID=0002
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
BUS=001
DEV=002
VID=04b4
PID=6560
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00
BUS=001
DEV=006
VID=2341
PID=003d
CLS=02
SCL=00
SPEED='full'
VER='1.1'
ISOC=0
INUM=2
ICLS1=02
ISCL1=02
ICLS2=10
ISCL2=00
BUS=001
DEV=005
VID=03eb
PID=204b
CLS=02
SCL=00
SPEED='full'
VER='1.1'
ISOC=0
INUM=2
ICLS1=02
ISCL1=02
ICLS2=10
ISCL2=00
ok, und was sagt
{ `lsusb` }
in der fhem Kommandozeile?
Gruß PeMue
1: PERL WARNING: Can't exec "lsusb": Not a directory at (eval 1817) line 1.
3: eval: { `lsusb` }
reproduziert, danke!...
ich versuch mal ein chmod -R 777 lib/perl5 -> kein Erfolg
ich ersetze komplett fhem durch ein neues aus dem fb7390 image.
so, nachdem ich auf ein neues fhem image migriert bin, bekomme ich nach Reboot wieder folgende Fehler:
PERL WARNING: Can't exec "lsusb": Not a directory at ./FHEM/98_autocreate.pm line 366.
PERL WARNING: Can't exec "ls": Not a directory at ./FHEM/98_autocreate.pm line 388.
PERL WARNING: Use of uninitialized value in split at ./FHEM/98_autocreate.pm line 388.
:o
ich betone WIEDER, denn {`lsusb`} ging nach Neuinstallation und migration der fhem.cfg, nun nicht mehr...
Hallo Rantanplan,
was steht denn bei Dir in der debug.cfg drin? Wird fhem korrekt gestartet? Welche Firmware hast Du?
Gruß Peter
meine debug.cfg aus /var/flash ist leer.
Firmware: 103.06.01 rev27132 Freetz: devel-11617M
fhem wird über tbflex 2.5 installiert
danke für die Geduld! ^^
w00000t, ich habs!
Da ich mit dem tbflexpatch arbeite, starte ich natürlich auch fhem über das Webinterface, welches ein Script ausführt, welches nicht das selbe ist, welches sich im fhem Verzeichnis befindet.
Ich weiss zwar noch nicht, warum, aber das könnt ihr mir sicher sagen und einen Bug lösen! 8)
#!/bin/sh
# startskript
daemon=fhem
daemon_cap=FHEM
TOOL_DIR='/tools'
. /usr/lib/tbmodcgi.sh
USTOR_PATH=$TBFLEX_USTOR_PATH
CHROOT_PATH=$TBFLEX_CHROOT_PATH
WORKING_DIR=/tools/fhem
EXTERNAL_PATH=$TBFLEX_TARGET_PATH/external_folder
CONF_DIR=$TBFLEX_TARGET_PATH/tools/fhem/.config
#normale konfig datei, wenn nicht da wird die standard datei kopiert
if [ -e $CONF_DIR/fhem.cfg ]; then
. $CONF_DIR/fhem.cfg
else
cp $CONF_DIR/.standard_fhem.cfg $CONF_DIR/fhem.cfg
. $CONF_DIR/fhem.cfg
fi
#bestimmt welche module geladen werden sollen
if [ -e $CONF_DIR/fhem_modules.cfg ]; then . $CONF_DIR/fhem_modules.cfg ; fi
home=$TBFLEX_TARGET_PATH$WORKING_DIR
VERSIONFILE=fhem_version
BOXTYPE=$FREETZ_INFO_BOXTYPE
DAEMONBIN=$home/$daemon
FHEMPL=$home/fhem.pl
PATH=$home:$PATH
export PATH
export LD_LIBRARY_PATH=$home/lib
if [ "$BOXTYPE" = "7390" ] || [ "$BOXTYPE" = "7360" ] || [ "$BOXTYPE" = "7320" ] || [ "$BOXTYPE" = "3370" ] ; then
export PERL5LIB=$home/lib/perl5/site_perl/5.12.2/mips-linux:$home/lib/perl5/site_perl/5.12.2:$home/lib/perl5/5.12.2/mips-linux:$home/lib/perl5/5.12.2
BOXTYPEOWN="FB7390_based"
fi
if [ "$BOXTYPE" = "3270" ] || [ "$BOXTYPE" = "7170" ] || [ "$BOXTYPE" = "7270" ]|| [ "$BOXTYPE" = "7270_v1" ] || [ "$BOXTYPE" = "7270_v2" ] || [ "$BOXTYPE" = "7270_v3" ] || [ "$BOXTYPE" = "7570" ] ; then
export PERL5LIB=$home/lib/perl:$home/lib/perl/arch
BOXTYPEOWN="FB7270_based"
fi
#perl executable
if [ ! -x $home/perl ] ; then
chmod 755 $home/perl
fi
if [ ! -L $home/$daemon ] ; then
ln -s $home/perl $home/$daemon
fi
outputexpert () {
#Output only shown when expert mode is active in toolbox flex
if [ "$USE_EXPERT_MOD" = "yes" ] ; then
OUTPUT=$1
#if [ -z $OUTPUT ] ; then OUTPUT='no output passed' ; fi
echo "$OUTPUT <b>#expert_mod ON</b>"
fi
}
do_updateversion () {
egrep 'DISTRIB_ID=|DISTRIB_RELEASE=|DISTRIB_BRANCH=' $home/FHEM/FhemUtils/release.pm | sed -e 's/\$//g' -e 's/\;//g' -e 's/my//g' -e 's/ = /=/g' > $home/$VERSIONFILE
grep $FHEMPL -e '$cvsid = ' | sed -e 's/ = /=/g' -e 's/my \$//g' >> $home/$VERSIONFILE
}
updateversion () {
if [ -e $home/$VERSIONFILE ] ; then
OLDERTH1DAY=`find $home/$VERSIONFILE -mtime +1`
#update nur wenn Versionsdatei ‰lter als ein Tag
if [ "$OLDERTH1DAY" = "$home/$VERSIONFILE" ] ; then
do_updateversion
fi
else
do_updateversion
fi
}
start() {
if [ -e $home/$FHEMCFGFILE ] ; then
FHEMCFG=$home/$FHEMCFGFILE
else
if [ -e $FHEMCFGFILE ] ; then
FHEMCFG=$FHEMCFGFILE
else
echo "<b><font color='#FF0000'>Konfigurationsdatei $FHEMCFGFILE is nicht korrekt!</font></b>"
exit
fi
fi
if [ ! -f $FHEMCFG ] ; then
echo "<b><font color='#FF0000'>Konfigurationsdatei nicht angegeben, versuche fhem.cfg</font></b>"
FHEMCFG="$home"/fhem.cfg
fi
#echo "TARGET_PATH="$TBFLEX_TARGET_PATH
#echo "WORKING_DIR="$WORKING_DIR
#echo "EXTERNAL_PATH="$EXTERNAL_PATH
#echo "CONF_DIR="$CONF_DIR
#echo "home="$home
#echo EXTTOOLS_FHEM_ENABLED=$EXTTOOLS_FHEM_ENABLED
#echo RUNASUSER=$RUNASUSER
#echo FHEMCFGFILE=$FHEMCFGFILE
#echo TELNETPORT=$TELNETPORT
#echo $FHEMCFGFILE
#echo $FHEMCFG
id fhem > /dev/null 2>&1
if [ "$?" -ne "0" ]; then
USERFHEMEX=no
else
USERFHEMEX=yes
fi
HOMEOWNER=`ls -l $CONF_DIR/fhem.cfg | awk '{print$3}'`
if [ "$USERFHEMEX" = no ] && [ "$RUNASUSER" = root ]; then
if [ "$HOMEOWNER" != "$RUNASUSER" ]; then
chown -R $RUNASUSER $home
fi
if [ "$BOXTYPEOWN" = "FB7390_based" ] ; then
chown root $home/dfu-programmer
chmod 4755 $home/dfu-programmer
fi
elif [ "$USERFHEMEX" = yes ] && [ "$RUNASUSER" = root ]; then
deluser fhem
if [ "$HOMEOWNER" != "$RUNASUSER" ]; then
chown -R $RUNASUSER $home
fi
if [ "$BOXTYPEOWN" = "FB7390_based" ] ; then
chown root $home/dfu-programmer
chmod 4755 $home/dfu-programmer
fi
elif [ "$USERFHEMEX" = no ] && [ "$RUNASUSER" = fhem ]; then
USERID=1080
cat /etc/passwd | grep $USERID >> /dev/null
ERRORLVL=$?
while [ $ERRORLVL = 0 ]
do
USERID=$(($USERID + 1))
cat /etc/passwd | grep $USERID >> /dev/null
ERRORLVL=$?
done
echo "fhem:any:$USERID:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
if [ "$HOMEOWNER" != "$RUNASUSER" ]; then
chown -R $RUNASUSER $home
fi
if [ "$BOXTYPEOWN" = "FB7390_based" ] ; then
chown root $home/dfu-programmer
chmod 4755 $home/dfu-programmer
fi
elif [ "$USERFHEMEX" = yes ] && [ "$RUNASUSER" = fhem ]; then
if [ "$HOMEOWNER" != "$RUNASUSER" ]; then
chown -R $RUNASUSER $home
fi
if [ "$BOXTYPEOWN" = "FB7390_based" ] ; then
chown root $home/dfu-programmer
chmod 4755 $home/dfu-programmer
fi
fi
echo "Starte FHEM Dienst ..."
outputexpert "Boxtype $BOXTYPEOWN"
#load kernel modules
i=1
for j in $MODULES_AVAILABLE
do
#echo $i: $j
LOADMOD=`egrep "LOAD_MODULE_"$i $CONF_DIR/fhem_modules.cfg | cut -d "'" -f2`
if [ ! -z $LOADMOD ] ; then
lsmod | grep $j >> /dev/null
GREPSTATUS=$?
if [ $GREPSTATUS -eq "1" ]; then
outputexpert "Modul $j laden"
modprobe $j
sleep 1
else
outputexpert "Modul $j bereits geladen"
fi
else
outputexpert "Modul $j nicht laden"
fi
i=`expr $i + 1`
done
if [ -x $home/fhemcmd.sh ]
then
ln -sf $home/fhemcmd.sh /var/fhemcmd
fi
cd $home
$DAEMONBIN $FHEMPL $FHEMCFG 1>$home/ERROR1 2>$home/ERROR2
sleep 2
if [ -z "$(pidof "$daemon")" ]; then
echo "$daemon <b><font color='#FF0000'>konnte nicht gestartet werden!</font></b>"
[ -s $home/ERROR1 ] && cat $home/ERROR1
[ -s $home/ERROR2 ] && cat $home/ERROR2
else
if [ -s $home/ERROR1 ]; then
echo "$daemon<font color='#008000'> gestartet</font><font color='#FF0000'><b> ABER mit folgender Fehlermeldung ERROR1.</font></b>"
tail $home/ERROR1
elif [ -s $home/ERROR2 ]; then
echo "$daemon<font color='#008000'> gestartet</font><font color='#FF0000'><b> ABER mit folgender Fehlermeldung ERROR2.</font></b>"
tail $home/ERROR2
else
echo "$daemon<b><font color='#008000'> gestartet.</font></b>"
fi
fi
}
stop() {
echo "Stoppe FHEM Dienst ..."
if [ -z "$(pidof "$daemon")" ];then
echo "$daemon<b><font color='#FF0000'> laeuft nicht.</font></b>"
else
if [ -z $TELNETPORT ] ; then
#echo kill mit killall $daemon
killall $daemon
KILLSTATUS=$?
if [ $KILLSTATUS -eq 0 ]; then
echo "$daemon<b><font color='#FF0000'> gestoppt.</font></b>"
else
echo "<b><font color='#FF0000'>$daemon nicht gestoppt.</font></b>"
fi
else
cd $home
#echo kill mit $FHEMPL
$DAEMONBIN $FHEMPL $TELNETPORT shutdown
sleep 1
if [ -z "$(pidof "$daemon")" ]; then
echo "$daemon<b><font color='#FF0000'> gestoppt.</font></b>"
else
echo "<b><font color='#FF0000'>$daemon nicht gestoppt.</font></b>"
echo "<b><font color='#FF0000'>TELNETPORT $TELNETPORT richtig und ohne Passwort konfiguriert?</font></b>"
echo "<b><font color='#FF0000'>Wenn Sie es nicht wissen den Telnetport lˆschen</font></b>"
fi
fi
fi
}
trim_string() {
trimmed=$1
trimmed=${trimmed%%}
trimmed=${trimmed##}
echo $trimmed
}
webif() {
HOST_IP=$(trim_string `hostname -i`)
status=$($0 status)
#echo $status
case $status in
running)
class="running"
;;
stopped)
class="stopped"
;;
esac
if [ "$status" = "stopped" ] || [ "$status" = "none" ]; then
echo "<font color='#FF0000'>web-interface</font>"
else
local FHEM_WEBIF=$(trim_string `grep "\ WEB\ " "$TBFLEX_TARGET_PATH/$WORKING_DIR/fhem.cfg" | cut -d " " -f4`)
if [ -z "$FHEM_WEBIF" ]; then
echo "<font color='#d4d6d7'>web-interface</font>"
else
echo "<a class='webif' href='$HOST_IP:$FHEM_WEBIF/fhem' target='_blank'><font color='#008000'><u>web-interface</u></font></a>"
fi
fi
}
case "$1" in
updateversion)
updateversion
;;
start)
start
updateversion
;;
stop)
stop
;;
restart)
stop
start
;;
status)
if [ -z "$(pidof "$daemon")" ]; then
echo 'stopped'
else
echo 'running'
fi
updateversion
;;
fhem_webif)
webif
;;
*)
echo "Usage: $0 [start|stop|load|restart|status|updateversion|fhem_webif]" 1>&2
exit 1
;;
esac
exit 0
Achso; gestartet über das startfhemAsRoot script gegth alles Besten! dankedankedanke PeMu!!!!