Page 1 of 4
How does the pinging script work on Qnap?
Posted: Mon Mar 20, 2017 9:39 pm
by aleksey_z
Help me please.
TS239ProII+ & QTS 4.2.4
I try to run the pinging script for ping network devices (smartphone), but it does not work and I get in the log:
Code: Select all
grep: invalid option -- w
BusyBox v1.01 (2017.03.12-18:58+0000) multi-call binary
Usage: grep [-ihHnqvs] PATTERN [FILEs...]
Search for PATTERN in each FILE or standard input.
Options:
-H prefix output lines with filename where match was found
-h suppress the prefixing filename on output
-i ignore case distinctions
-l list names of files that match
-n print line number with output lines
-q be quiet. Returns 0 if result was found, 1 otherwise
-v select non-matching lines
-s suppress file open/read error messages
The script looks like this:
Code: Select all
#!/bin/sh
#set up new vars;
new_var=0
var1=android
var2=192.168.1.35
ddd=$(date +"%Y-%m-%d %H:%M:%S,%3N")
echo "datetime = $ddd"
echo "ipaddress to check is $var2"
status=`ping -qc 1 $var2 | grep -wi '[0-9][[:space:]]received'|awk -F, '{print $2}'|awk '{print $1}'`
echo "$var1 status is :$status";
# if status is ge 1 that means one of the ips responded to a ping.
# therefore value in pingsensor table should be set to 0;
if [[ $status -gt 0 ]]; then
echo "ping response received resetting $var1 status to 1"
echo "1" > /share/MD0_DATA/.qpkg/OpenRemote/OpenRemote/facts/sensor_$var1
else
#write out a 0 in the android_sensor file
echo "0" > /share/MD0_DATA/.qpkg/OpenRemote/OpenRemote/facts/sensor_$var1
fi
ddd=$(date +"%Y-%m-%d %H:%M:%S,%3N")
echo "datetime = $ddd"
echo "**********************************************************"
On my second NAS Synology, this script works well for pinging my smartphone.
Thanks.
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 2:20 am
by OneCD
Looks like your old BusyBox 1.01 grep doesn't like that 'w' option.
So, you'll need to install
GNU grep.
As I think you're now back on Optware (instead of Entware), try this:
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 4:31 am
by aleksey_z
Thanks for you quickly reply. Yes, I have install Optware.
Tomorrow a morning i try this.
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 2:58 pm
by aleksey_z
Hi.
I am install GNU grep.
Code: Select all
[~] # ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ts509/cross/unstable/Packa ges.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ts509/cross/unstable/Package s.gz
Updated list of available packages in /opt/lib/ipkg/lists/ts509
Successfully terminated.
[~] # ipkg install grep
Installing grep (2.12-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ts509/cross/unstable/grep_ 2.12-1_i686.ipk
Installing pcre (8.31-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ts509/cross/unstable/pcre_ 8.31-1_i686.ipk
Installing libstdc++ (6.0.9-6) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ts509/cross/unstable/libst dc++_6.0.9-6_i686.ipk
Configuring grep
update-alternatives: Linking //opt/bin/grep to /opt/bin/grep-grep
update-alternatives: Linking //opt/bin/egrep to /opt/bin/grep-egrep
update-alternatives: Linking //opt/bin/fgrep to /opt/bin/grep-fgrep
Configuring libstdc++
Configuring pcre
Successfully terminated.
[~] # ipkg list_installed
autoconf - 2.69-1 - Creating scripts to configure source code packages using templates
automake - 1.12-1 - Creates GNU standards-compliant Makefiles from template files
binutils - 2.17-2 - The GNU assembler and linker and related tools
freetype - 2.3.6-1 - Free truetype library
gcc - 4.2.1-5 - The GNU Compiler Collection.
grep - 2.12-1 - Global regular expression parser
libc-dev - 2.6.1-5 - libc development files.
libnsl - 2.6.1-4 - Network Services Library
libstdc++ - 6.0.9-6 - Standard C++ library, needed for dynamically linked C++ programs
m4 - 1.4.16-1 - gnu macro processor and compiler front end
make - 3.82-1 - examines files and runs commands necessary for compilation
pcre - 8.31-1 - Perl-compatible regular expression library
zlib - 1.2.5-1 - zlib is a library implementing the 'deflate' compression system.
Successfully terminated.
[~] # reboot
The same log:
Code: Select all
grep: invalid option -- w
BusyBox v1.01 (2017.03.12-18:58+0000) multi-call binary
Usage: grep [-ihHnqvs] PATTERN [FILEs...]
Search for PATTERN in each FILE or standard input.
Options:
-H prefix output lines with filename where match was found
-h suppress the prefixing filename on output
-i ignore case distinctions
-l list names of files that match
-n print line number with output lines
-q be quiet. Returns 0 if result was found, 1 otherwise
-v select non-matching lines
-s suppress file open/read error messages
If -- v, then:
Code: Select all
ping: sendto: Invalid argument
ping: sendto: Invalid argument
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 3:12 pm
by OneCD
Which grep are you using?
If your $PATH isn't set correctly, you won't run the new one by default.
To check the version:
Then try this one:
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 3:18 pm
by aleksey_z
Code: Select all
[~] # which grep
/bin/grep
[~] # grep --version
grep: unrecognized option `--version'
BusyBox v1.01 (2017.03.12-18:58+0000) multi-call binary
Usage: grep [-ihHnqvs] PATTERN [FILEs...]
Search for PATTERN in each FILE or standard input.
Options:
-H prefix output lines with filename where match was found
-h suppress the prefixing filename on output
-i ignore case distinctions
-l list names of files that match
-n print line number with output lines
-q be quiet. Returns 0 if result was found, 1 otherwise
-v select non-matching lines
-s suppress file open/read error messages
[~] # /opt/bin/grep --version
/opt/bin/grep (GNU grep) 2.12
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 3:31 pm
by OneCD
So, you can now either manually specify /opt/bin/grep each time you need it, or you can prepend /opt/bin to your $PATH.
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 3:48 pm
by aleksey_z
I have little knowledge in Linux.
In the $PATH now like this: (after installing Optware-IPKG from package, I did not touch anything)
Code: Select all
# ~/.bashrc: executed by bash(1) for non-login interactive shells.
export PATH=\
/bin:\
/sbin:\
/usr/bin:\
/usr/sbin:\
/usr/bin/X11:\
/usr/local/sbin
# If running interactively, then:
if [ "$PS1" ]; then
if [ "$BASH" ]; then
export PS1="[\u@\h \W]\\$ "
alias ll='/bin/ls -laFh'
alias ls='/bin/ls -F'
export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:';
else
if [ "`id -u`" -eq 0 ]; then
export PS1='# '
else
export PS1='$ '
fi
fi
export USER=`id -un`
export LOGNAME=$USER
export HOSTNAME=`/bin/hostname`
export HISTSIZE=1000
export HISTFILESIZE=1000
export PAGER='/bin/more '
export EDITOR='/bin/vi'
export INPUTRC=/etc/inputrc
export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
### Some aliases
alias ps2='ps facux '
alias ps1='ps faxo "%U %t %p %a" '
alias af='ps af'
alias cls='clear'
alias df='df -h'
alias indent='indent -bad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -npsl -nsc -nsob -nss -ts4 '
#alias bc='bc -l'
alias minicom='minicom -c on'
alias calc='calc -Cd '
alias bc='calc -Cd '
fi;
export PATH=${PATH}:/usr/local/bin
alias smb2enable='/etc/init.d/smb2_protocol.sh enable'
alias smb2disable='/etc/init.d/smb2_protocol.sh disable'
alias smb2status='/etc/init.d/smb2_protocol.sh status'
alias smb21enable='/etc/init.d/smb2_protocol.sh enable 21'
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin
export JAVA_HOME=/usr/local/jre
export PATH=$PATH:$JAVA_HOME/bin
Where do I need to add /opt/bin/grep ?
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 4:05 pm
by OneCD
The third line from the bottom should be re-arranged so the
/opt directories are at the front.
Like this:
Code: Select all
export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 4:59 pm
by aleksey_z
Not work. I add:
Code: Select all
export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin:/var/lib/phpfiwa:/var/lib/phpfina:/var/lib/phptimeseries:/var/log
Code: Select all
grep: invalid option -- w
BusyBox v1.01 (2017.03.12-18:58+0000) multi-call binary
Usage: grep [-ihHnqvs] PATTERN [FILEs...]
Search for PATTERN in each FILE or standard input.
Options:
-H prefix output lines with filename where match was found
-h suppress the prefixing filename on output
-i ignore case distinctions
-l list names of files that match
-n print line number with output lines
-q be quiet. Returns 0 if result was found, 1 otherwise
-v select non-matching lines
-s suppress file open/read error messages
Please tell me where in the Qnap is being tuned a php open_basedir path.
I need to add:
Code: Select all
:/var/lib/phpfiwa:/var/lib/phpfina:/var/lib/phptimeseries:/var/log
In Synology it looks like this: screen
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 8:41 pm
by aleksey_z
Now, i change in Optware.sh
Code: Select all
# adding Ipkg apps into system path ...
/bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "export PATH=\$PATH":/opt/bin:/opt/sbin >> /etc/profile
after reboot i get this:
Code: Select all
[~] # echo $PATH
/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin:/usr/local/jre/bin
but in the /etc/profile only
Code: Select all
export PATH=$PATH:/opt/bin:/opt/sbin
in ping script log new argument
Code: Select all
ping: sendto: Invalid argument
grep: invalid option -- w
BusyBox v1.01 (2017.03.12-18:58+0000) multi-call binary
Usage: grep [-ihHnqvs] PATTERN [FILEs...]
Search for PATTERN in each FILE or standard input.
Options:
-H prefix output lines with filename where match was found
-h suppress the prefixing filename on output
-i ignore case distinctions
-l list names of files that match
-n print line number with output lines
-q be quiet. Returns 0 if result was found, 1 otherwise
-v select non-matching lines
-s suppress file open/read error messages
Re: How does the pinging script work on Qnap?
Posted: Tue Mar 21, 2017 8:59 pm
by aleksey_z
Next step:
I change pinging script. Now the script looks like this:
Code: Select all
#!/bin/sh
#set up new vars;
new_var=0
var1=android
var2=192.168.1.35
ddd=$(date +"%Y-%m-%d %H:%M:%S,%3N")
echo "datetime = $ddd"
echo "ipaddress to check is $var2"
status=`ping -q c 1 $var2 | grep -vi '[0-9][[:space:]]received'|awk -F, '{print $2}'|awk '{print $1}'`
echo "$var1 status is :$status";
# if status is ge 1 that means one of the ips responded to a ping.
# therefore value in pingsensor table should be set to 0;
if [[ $status -gt 0 ]]; then
echo "ping response received resetting $var1 status to 1"
echo "1" > /share/MD0_DATA/.qpkg/OpenRemote/OpenRemote/facts/sensor_$var1
else
#write out a 0 in the android_sensor file
echo "0" > /share/MD0_DATA/.qpkg/OpenRemote/OpenRemote/facts/sensor_$var1
fi
ddd=$(date +"%Y-%m-%d %H:%M:%S,%3N")
echo "datetime = $ddd"
echo "**********************************************************"
but in log only:
Code: Select all
ping: c: Unknown host
ping: c: Unknown host
ping: c: Unknown host
ping: c: Unknown host
ping: c: Unknown host
How fix its script?
Re: How does the pinging script work on Qnap?
Posted: Wed Mar 22, 2017 1:32 am
by OneCD
No sure where to start.
You're missing steps, you're rebooting without ensuring your files will be modified after reboot, you're showing extracts from files with no context.
When (re)setting variables like $PATH multiple times, the order becomes important. e.g.
PATH="/usr:/usr/bin"
PATH="/opt/bin:/opt/sbin:$PATH"
OneCD wrote:The third line from the bottom should be re-arranged so the
/opt directories are at the front.
Like this:
Code: Select all
export PATH=/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
Please note: /etc/profile is not persistent - changes made to it will be lost when you reboot - so you'll need to ensure that your /etc/profile is restored after reboot.
When you changed /etc/profile as I indicated above, did you logout and reconnect your SSH session?
Maybe the best thing to do (for now) is to set your $PATH manually. Run your script. Check that it works. If so, THEN modify /etc/profile.
So, at the shell prompt:
Code: Select all
export PATH="/opt/bin:/opt/sbin:$PATH"
Then try running your script.
Re: How does the pinging script work on Qnap?
Posted: Wed Mar 22, 2017 3:27 am
by aleksey_z
I performed at the shell prompt:
Code: Select all
[~] # export PATH="/opt/bin:/opt/sbin:$PATH"
Now I get:
Code: Select all
[~] # echo $PATH
/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin:/opt/bin:/opt/sbin:/usr/local/jre/bin
running script, but in log as before:
Maybe the script itself is not correct? But on the Synology worked well.
Re: How does the pinging script work on Qnap?
Posted: Wed Mar 22, 2017 3:37 am
by OneCD
aleksey_z wrote:running script, but in log as before:
Your ping command should specify '-c'. At the moment, it specifies 'c'
So, change it to this:
Code: Select all
status=`ping -q -c 1 $var2 | grep -vi '[0-9][[:space:]]received'|awk -F, '{print $2}'|awk '{print $1}'`