Monthly Archive for March, 2014

top

You may select the columns shown by the ‘top’ command with the ‘f’ key. Just run top and press ‘f’. Columns marked with * are shown, others are not.

In some versions of ‘top’ you have to select the [un]displayed item with arrows and activate/deactivate them with ‘d’ or space.

Asterisk: round-robin dial out through trunks

Imagine that we have 3 trunks for dial out and we must balance outgoing calls in random order. This could be done with the RAND function. Module func_rand.so must be compiled and loaded.

sip.conf:

[trunk1](trunk_preset)
host=10.10.10.11

[trunk2](trunk_preset)
host=10.10.10.12

[trunk3](trunk_preset)
host=10.10.10.13

extensions.conf:

exten => _79XXXXXXXXX,1,NoCDR()
    same => n,Dial(SIP/trunk${RAND(1,3)}/${EXTEN})
    same => n(hang),Hangup()

You may say – well, OK, but what if my trunks are named not like [trunk1], [trunk2], [trunkN] and I can not substitute the last symbol in Dial application?
In this case we can write a list of trunk names (which you configured already in sip.conf) in txt file, for example rrtrunks.txt:

teliasonera-out
deutschetelekom-out
level3-out

Ensure that a ‘sort’ command is available in your *NIX system. Usually it’s a part of coreutils. Older versions don’t suit us, because they don’t have the ‘-R’ flag which means sort randomly. Newer versions have.

Then load func_shell.so and use it in your dialplan. It can execute a shell command and use its output in dialplan.

exten => _79XXXXXXXXX,1,NoCDR()
    same => n,Dial(SIP/${SHELL(sort -R /etc/asterisk/rrtrunks.txt | head -1)}/${EXTEN},20)
    same => n,Hangup()

It means that we sort randomly our list of trunks and get the first one each time.

Get rid of LibreOffice slow start

Assuming your hostname is darkstar, add these lines to your /etc/hosts:

# fix libreoffice slow start
127.0.0.1 darkstar.(none)

Be sure that your hostname is the same both in /etc/hostname and in /etc/hosts .

Thanks for www.nixp.ru.

Asterisk 12 Notes

To use ‘Gosub‘ (and also ‘Return‘, ‘GosubIf‘ and ‘StackPop‘) application you must load app_stack.so .
To make calling between endpoints possible, you must load bridge_simple.so .

To originate calls from CLI you must load res_clioriginate.so (assuming app_originate.so is already loaded).

Using ‘screen’ for multiple SSH sessions from a remote computer

1. Log in to the remote server.
2. Type 'screen'. The virtual screen #0 will be opened. We’ll use it as a starting point for creating other screens.
3. Type 'screen -t server1'. This command will open one more virtual screen with title ‘server1’, we will use it for entering the server1, for example ‘ssh server1’.
4. Press Control-a and then ” (double inverted commas)
This command will list all your virtual screens. You may select any of them moving with up/down arrows and then pressing enter. Enter the screen #0.
5. From screen #0 we can create one more screen, for example 'screen -t server2'.
6. Jumping from one screen to some other can be done with Ctrl-a and then ” or Ctrl-a and the number of screen. In our case – 0, 1 and 2.
7. You may close any screen with Ctrl-D or 'exit', like usual.

Another scenario:

1. screen -S 1st_session_name to start screen with some session name.
2. Ctrl-a d to detach from session.
3. screen -ls to list all sessions and their pids.
4. screen -r %pid% to reconnect to a session with %pid%.

find

Find files older than 15 days and list them:

[root@staff /root]# find /var/squid/logs/ -mtime +15 -execdir ls -lh {} \;
-rw-r-----  1 squid  squid    91k Feb 16 20:46 /var/squid/logs/cache.log.17
-rw-r-----  1 squid  squid   108M Feb 17 00:00 /var/squid/logs/access.log.17
-rw-r-----  1 squid  squid   122M Feb 16 00:00 /var/squid/logs/access.log.18
-rw-r-----  1 squid  squid   355M Feb 19 00:00 /var/squid/logs/access.log.15
-rw-r-----  1 squid  squid   137k Feb 18 23:55 /var/squid/logs/cache.log.15
-rw-r-----  1 squid  squid   275M Feb 18 00:00 /var/squid/logs/access.log.16
-rw-r-----  1 squid  squid   145k Feb 17 21:49 /var/squid/logs/cache.log.16

List files modified during last 5 minutes:

find /some/path/ -type f -mmin -5 -execdir ls -l {} \;

Find files bigger than 2 kilobytes in .mc/ directory:

find .mc/ -type f -size +2000c
.mc/ini

or:

find .mc/ -type f -size +2k
.mc/ini

Find files smaller than 80 bytes in .mc/ directory:

vn ~ # find .mc/ -type f -size -80c
.mc/Tree
.mc/cedit/cooledit.clip

Handy one-liner for searching a file with wildcard, case-insensitive, in 2 directories simultaneously (assuming the file contains ‘Yutong’):

srv ~ # find /storage/sounds/{cars,ru/cars} -iname yut\*
/storage/sounds/cars/Yutong.wav
/storage/sounds/ru/cars/Yutong.wav

Find files with “+380” in their name which were created on October 13, 2015 and copy them to /home/lexus/:

find /storage/cluster/ready/ -name "*+380*" -type f -newermt 2015-10-13 ! -newermt 2015-10-14 -execdir cp {} /home/lexus/ \;