Need help with this script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with this script
# 1  
Old 11-25-2012
Debian Need help with this script

hi
i have this file (teste.cfg) with this information

Code:
##
#======== User Subscribers ========
F: user1 221145689 1 0 0 { 0:0:1 } # 24-12-2012 ; Comment
F: user2 224458710 1 0 0 { 0:0:1 } # 11-11-2012 ; Comment
F: user3 325478901 1 0 0 { 0:0:1 } # 24-12-2013 ; Comment
F: user4 325478963 1 0 0 { 0:0:1 } # 08-02-2014 ; Comment
F: user5 201445252 1 0 0 { 0:0:1 } # 02-08-2012 ; Comment
F: user6 1145Tdd54 1 0 0 { 0:0:1 } # 24-12-2012 ; Comment
F: user7 Q45545rr2 1 0 0 { 0:0:1 } # 25-01-2013 ; Comment
F: user8 001s2d4rT 1 0 0 { 0:0:1 } # 24-12-2015 ; Comment
#======== End User Subscribers ========
##
#
#
#
#fin de user

and this script (Userscript)

Code:
#!/bin/sh
cd /var


YT=`date +%Y`
MT=`date +%m`
DT=`date +%d`
MT=${MT#0}
DT=${DT#0}
 
while read line
do
    Y=${line##*-}
    M=${line%-$Y}
    M=${M##*-}
    D=${line%-$M-$Y}
    Y=${Y%% *}
    D=${D##* }
    M=${M#0}
    D=${D#0}
 
    if [ -z "${line%%#*}" ] || [ $YT -lt $Y ] || [ $YT -eq $Y -a $MT -lt $M ] || [ $YT -eq $Y -a $MT -eq $M -a $DT -lt $D ]
    then
        echo "$line"
    else
        echo "#$line"
    fi
done < /var/teste.cfg > /tmp/teste.cfg
 
mv /tmp/teste.cfg /var/teste.cfg

the script not work correctly

i need to change it
1- test line if the date is expired add # befor the line
2- if the line expired and i change the date the script delet # befor the line

thank you

i use server debian

Moderator's Comments:
Mod Comment Please use code tags for code and data

Last edited by Scrutinizer; 11-25-2012 at 03:35 PM.. Reason: code tags
# 2  
Old 11-25-2012
Script by converting string to seconds since 1970-01-01 00:00:00 UTC and comparing:-
Code:
#!/bin/bash

CURR_DATE=$( date +"%s" )

while read line
do
        LINE_DATE=$( echo $line | awk -F# ' { print substr($2,8,4) substr($2,5,2) substr($2,2,2); } ' );
        LINE_DATE=$( date -d"$LINE_DATE" +"%s" )
        if [ $LINE_DATE -lt $CURR_DATE ]
        then
                echo "#${line}"                                   # Adding # sign
        else
                echo "${line}" | sed 's_^#__g'                    # Removing # sign
        fi
done < /var/teste.cfg

# 3  
Old 11-25-2012
Code:
server:~# /var/userteste.sh
date: date non valide آ�آ +%sآ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected
#
date: date non valide آ�آ = Us====آ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected
======== User Subscribers ========
F: user1 221145689 1 0 0 { 0:0:1 } # 24-12-2012 ; Comment
#F: user2 224458710 1 0 0 { 0:0:1 } # 11-11-2012 ; Comment
F: user3 325478901 1 0 0 { 0:0:1 } # 24-12-2013 ; Comment
F: user4 325478963 1 0 0 { 0:0:1 } # 08-02-2014 ; Comment
#F: user5 201445252 1 0 0 { 0:0:1 } # 02-08-2012 ; Comment
F: user6 1145Tdd54 1 0 0 { 0:0:1 } # 24-12-2012 ; Comment
F: user7 Q45545rr2 1 0 0 { 0:0:1 } # 25-01-2013 ; Comment
F: user8 001s2d4rT 1 0 0 { 0:0:1 } # 24-12-2015 ; Comment
date: date non valide آ�آ = En====آ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected
======== End User Subscribers ========
date: date non valide آ�آ +%sآ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected
#
date: date non valide آ�آ +%sآ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected

date: date non valide آ�آ +%sآ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected

date: date non valide آ�آ +%sآ آ؛
/var/userteste.sh: line 9: [: -lt: unary operator expected

---------- Post updated at 02:35 PM ---------- Previous update was at 02:34 PM ----------

format of date !!!!!

Last edited by Scrutinizer; 11-25-2012 at 03:54 PM.. Reason: code tags
# 4  
Old 11-25-2012
Seems to be a pay server...
Change to OSCam and you can set end date.
Client still can connect to you with their CCcam line.
# 5  
Old 11-25-2012
now after change type date
Code:
##
#======== User Subscribers ========
F: user1 221145689 1 0 0 { 0:0:1 } # 2012-12-24 ; Comment
F: user2 224458710 1 0 0 { 0:0:1 } # 2012-11-11 ; Comment
F: user3 325478901 1 0 0 { 0:0:1 } # 2013-12-24 ; Comment
F: user4 325478963 1 0 0 { 0:0:1 } # 2014-02-08 ; Comment
F: user5 201445252 1 0 0 { 0:0:1 } # 2012-08-02 ; Comment
F: user6 1145Tdd54 1 0 0 { 0:0:1 } # 2012-12-24 ; Comment
F: user7 Q45545rr2 1 0 0 { 0:0:1 } # 2013-01-25 ; Comment
F: user8 001s2d4rT 1 0 0 { 0:0:1 } # 2015-12-24 ; Comment
#======== End User Subscribers ========
##
#
#
#
#fin de user

date: date non valide

---------- Post updated at 02:43 PM ---------- Previous update was at 02:41 PM ----------

Quote:
Originally Posted by Jotne
Seems to be a pay server...
Change to OSCam and you can set end date.
Client still can connect to you with their CCcam line.
thank's
but i need this script

Last edited by Scrutinizer; 11-25-2012 at 03:53 PM.. Reason: code tags
# 6  
Old 11-26-2012
Read the CCcam.cfg and test for line starting with F:
Then test field number #11 with this $(date +"%d-%m-%Y")
No need to split everything up.
Rune script once every day with a cron job

---------- Post updated at 07:56 ---------- Previous update was at 07:15 ----------

Here you go

CCcam.cfg
Code:
F: user1 221145689 1 0 0 { 0:0:1 } # 24-12-2012 ; Comment
#F: user2 224458710 1 0 0 { 0:0:1 } # 11-11-2012 ; Comment
F: user3 325478901 1 0 0 { 0:0:1 } # 24-12-2013 ; Comment
F: user4 325478963 1 0 0 { 0:0:1 } # 08-02-2014 ; Comment
#F: user5 201445252 1 0 0 { 0:0:1 } # 02-08-2012 ; Comment
F: user6 1145Tdd54 1 0 0 { 0:0:1 } # 26-11-2012 ; Comment
F: user7 Q45545rr2 1 0 0 { 0:0:1 } # 25-01-2013 ; Comment
F: user8 001s2d4rT 1 0 0 { 0:0:1 } # 24-12-2015 ; Comment
C: ser.no-ip.com 12000 user9 pass10
SERVER LISTEN PORT : 56474
WEBINFO USERNAME : root
WEBINFO PASSWORD : secret

# Smargo Cardreader
SERIAL READER : /dev/ttyUSB0 smartreader+

DEBUG : yes
SHOW TIMING: yes

script to run every day:
Code:
#!/bin/sh
awk '{ if ($0~"^[fF]" && $11==d) print "#"$0; else print $0}' d=$(date +%d-%m-%Y) CCcam.cfg > CCcam.cfg.new
mv CCcam.cfg.new  CCcam.cfg

New CCcam.cfg (look at user6)
Today its 26 Nov 2012
Code:
F: user1 221145689 1 0 0 { 0:0:1 } # 24-12-2012 ; Comment
#F: user2 224458710 1 0 0 { 0:0:1 } # 11-11-2012 ; Comment
F: user3 325478901 1 0 0 { 0:0:1 } # 24-12-2013 ; Comment
F: user4 325478963 1 0 0 { 0:0:1 } # 08-02-2014 ; Comment
#F: user5 201445252 1 0 0 { 0:0:1 } # 02-08-2012 ; Comment
#F: user6 1145Tdd54 1 0 0 { 0:0:1 } # 26-11-2012 ; Comment
F: user7 Q45545rr2 1 0 0 { 0:0:1 } # 25-01-2013 ; Comment
F: user8 001s2d4rT 1 0 0 { 0:0:1 } # 24-12-2015 ; Comment
C: ser.no-ip.com 12000 user9 pass10
SERVER LISTEN PORT : 56474
WEBINFO USERNAME : root
WEBINFO PASSWORD : secret

# Smargo Cardreader
SERIAL READER : /dev/ttyUSB0 smartreader+

DEBUG : yes
SHOW TIMING: yes

awk line written some more readable
Code:
awk '{ 
if ($0~"^[fF]" && $11==d)
	print "#"$0
else 
	print $0}
' d=$(date +%d-%m-%Y) CCcam.cfg > CCcam.cfg.new

---------- Post updated at 18:26 ---------- Previous update was at 07:56 ----------

Its not a good idea removing a user by removing his F: line. This will create a huge amount if error in the logs. So set the the F: line to 0 0 0 { 0:0:0 }
This way user is still logged inn, but does not get any ECM
Code:
awk '$0~"^[fF]" && $11==d {$4=0;$8="0:0:0"} 1' d=$(date +%d-%m-%Y) CCcam.cfg > CCcam.cfg.new


Last edited by Jotne; 11-26-2012 at 02:54 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question