# Automatic CDR Retrieval

This procedure describes how to configure the ProSBC to send its Call Detail Records (CDR) files to a remote server automatically and perform daily (or monthly) file archives.

## Overview

The *tbcopycdr* script supports the following features:

* Move cdr files from TMG\_CDR\_DIR to TMG\_TEMP\_DIR
* Send files to a remote server
* Move sucessfully sent files (rename to .sent.gz) from TMG\_TEMP\_DIR to TMG\_ARCHIVE\_DIR (ARCHIVE=true)
* Rename sucessfully sent files (.sent.gz) in TMG\_TEMP\_DIR (ARCHIVE=false; ERASE\_AFTER\_SEND=false)
* Delete sucessfully sent files from TMG\_TEMP\_DIR (ARCHIVE=false; ERASE\_AFTER\_SEND=true)
* If a file failed to be sent to remote server, it is kept in TMG\_TEMP\_DIR until it is successfully sent

\
The *tbarchivecdr* script creates a gzip tar archive with all gz files copied by *tbcopycdr* in TMG\_ARCHIVE\_DIR

* Change directory to TMG\_ARCHIVE\_DIR
* Create a temporary folder with the current date (for example: 2016-01-30)
* Sleep for 90 second
* Move all \*.gz files and $TMG\_TEMP\_DIR/$LOG\_FILE to this folder
* Archive the folder in a gzipped tar file (cdr\_2016\_01\_30\_$hostname.tgz)

## Configuration

The script is configured with user variables.

* *CONFIG\_FILE*: Configuration file name and location. By default, it is set to /root/tbcopycdr.cfg

```
CONFIG_FILE=/root/tbcopycdr.cfg
```

*tbcopycdr.cfg* file example:

```
TMG_TEMP_DIR=/home/tbcopycdr
TMG_CDR_DIR=/lib/tb/toolpack/setup/12358/cdr_logs
ARCHIVE=true
TMG_ARCHIVE_DIR=/lib/tb/toolpack/setup/12358/cdr_archive
ARCHIVE_MAX_DAYS=180
REMOTE_HOST=192.168.101.170
REMOTE_PORT=22
REMOTE_DIR=/root/cdr_backups
REMOTE_USER=root
```

The configuration file can redefine any of the following user variables. To see the default variables:

```
head -n 50 /usr/bin/tbcopycdr
```

* *TMG\_CDR\_DIR*: Tmedia directory where the [CDR](https://docs.telcobridges.com/wiki/Text_Call_Detail_Records_\(CDR\)) are located. Default is /lib/tb/toolpack/setup/12358/cdr\_logs

```
TMG_CDR_DIR=/lib/tb/toolpack/setup/12358/cdr_logs
```

* *REMOTE\_HOST* : Remote hostname or Ip address. Remote host copy is disabled by default.

```
REMOTE_HOST=10.10.10.10
```

* *REMOTE\_PORT* : Remote host ssh port.

```
REMOTE_PORT=22
```

* *REMOTE\_DIR* : Remote directory where to copy the backup files (/root/backup by default)

```
REMOTE_DIR=/root/backup
```

* *REMOTE\_USER* : Remote host login user.

```
REMOTE_USER=root
```

* *CONNECT\_TIMEOUT* : *scp* connection timeout

```
CONNECT_TIMEOUT=10
```

* *ARCHIVE*: true or false. If set to true, move successfully sent files (rename to .sent.gz) from TMG\_TEMP\_DIR to TMG\_ARCHIVE\_DIR. Default is false.

```
ARCHIVE=false
```

* *TMG\_ARCHIVE\_DIR*: Directory where the cdrs are moved if ARCHIVE=true

```
TMG_ARCHIVE_DIR=/lib/tb/toolpack/setup/12358/cdr_archive
```

* *ARCHIVE\_MAX\_DAYS*: Define how many days the archive file (.tgz) should be kept in TMG\_ARCHIVE\_DIR. This user variable is used by *tbarchivecdr* only.

```
# Assign no value to disable
ARCHIVE_MAX_DAYS=
```

* *ERASE\_AFTER\_SEND*: Take effect only if ARCHIVE is false. If ERASE\_AFTER\_SEND is true, erase file from TMG\_TEMP\_DIR, else, rename and keep files in working directory.

```
ERASE_AFTER_SEND=false
```

Note: If you set ERASE\_AFTER\_SEND to false, the CDR text file will be available in the /home/telcobridges/cdr/ directory and renamed \*.gz.already\_send.

## Remote Server Copy

You must create an SSH key pair and copy it to the remote server, if the remote server copy is configured. This will enable copy the backup files to the remote host without asking for a password. Follow the instructions here:

* [Password-less SSH](https://docs.telcobridges.com/wiki/Password_less_ssh)

## Troubleshooting

### Test

* Run the tbcopycdr script with the -v option

```
tbcopycdr -v
```

If no errors are seen in the shell, your configuration is correct. In addition, you should have a hello\_world.log file on the remote host.

### Log File

Transfer results are written in $TMG\_TEMP\_DIR/$LOG\_FILE

## Schedule the Scripts

* Create a new crontab on the [Tmedia](https://docs.telcobridges.com/wiki/Tmedia)

```
crontab -e
```

* Add new lines with the cron configuration

*tbcopycdr*:

<table><thead><tr><th width="210">Frequency</th><th width="400">Cron Configuration</th></tr></thead><tbody><tr><td>Every 10 minutes</td><td><code>*/10 * * * * /usr/bin/tbcopycdr > /dev/null 2>&#x26;1</code></td></tr><tr><td>hourly (top of the hour)</td><td><code>0 * * * * /usr/bin/tbcopycdr > /dev/null 2>&#x26;1</code></td></tr><tr><td>daily (midnight)</td><td><code>0 0 * * * /usr/bin/tbcopycdr > /dev/null 2>&#x26;1</code></td></tr></tbody></table>

*tbarchivecdr*:

<table><thead><tr><th width="210">Frequency</th><th width="400">Cron Configuration</th></tr></thead><tbody><tr><td>daily@23h59</td><td><code>59 23 * * * /usr/bin/tbarchivecdr > /dev/null 2>&#x26;1</code></td></tr><tr><td>weekly (sunday@23h59)</td><td><code>59 23 * 7 * /usr/bin/tbarchivecdr > /dev/null 2>&#x26;1</code></td></tr></tbody></table>

Cron table example for a cdr copy to an external server every 10 minutes with a daily archive of all the transmitted files:

```
*/10 * * * * /usr/bin/tbcopycdr > /dev/null 2>&1
59 23 * * * /usr/bin/tbarchivecdr > /dev/null 2>&1
```
