Section: (1)
Updated: 0.1.1
Index Back


cnremctrl - remote control server application  


cnremctrl [-st] [-l /path/logfile] [--cmd01=/path/cmd] [--cmd02=/path/cmd] ... [--cmd10=/path/cmd]  


This application is the receiver or server of a remote control for your linux server. The sender or client is a Microsoft Windows program called cnRemoteControl.exe.
The client has 1 to 10 buttons. If the user pushes e.g. button no. 3, the client sends a string Button03 via TCP/IP on a reserved port (default 26056/tcp) to the linux server.
cnremctrl uses the well known TCP wrapper xinetd(8). xinetd is bind on the cnremctrl port and verifies, if the sender IP address is allowed to communicate to the server. If the result is ok, xinetd pipes the string Button03 to cnremctrl.
cnremctrl looks for an appropriate command in its conf file /etc/xinetd.d/cnremctrl. If program option --cmd03 is defined, it will be executed via a system call. All command output to stdout and the command exitstate is piped back to the client. The client has an log window to display this output and statusinfo.


The whole program configuration is under control of /etc/xinetd.d/cnremctrl. If xinetd starts, the daemon scans the directory /etc/xinetd.d and parses each file. The default file for cnremctrl is:

  service cnremctrl
    type           = UNLISTED
    port           = 26056
    socket_type    = stream
    protocol       = tcp
    user           = root
    server         = /usr/local/bin/cnremctrl
    server_args    = -s --cmd01=/path/to/command1 --cmd02=/command2%20-para       
    wait           = no
    instances      = 1
    per_source     = 1
    only_from      =
    log_type       = SYSLOG daemon
    log_on_success = PID HOST EXIT DURATION
    log_on_failure = HOST ATTEMPT

Usually you have to change only:

server commands and the way of logging

One or more IP addresses or a range of IPs in CIDR notation the server has to accept

All xinetd options are well documented in the man page xinetd(8).

Note: If you change the conf file, you have to reload the configuration! On Red Hat type /etc/rc.d/init.d/xinted reload, under SuSE type rcxinetd reload. Look for the exit value of xinetd after restarting. If the conf file is buggy, xinetd might not start properly.

Space workaround

If a command contains one or more spaces, e.g. ls -al, you have to replace every space with %20, so the correct command string runs --cmdXY=ls%20-al.
You have to proceed this way because the string has to be interpreted as one program option and xinetd is incapable of handling quotes on server-args.


Be aware which commands should be called by cnremctrl. Be aware which IP addresses should have access to the server (parameter only_from). cnremctrl is not insecure as long as you do not configure it inproper.
The only strings the client sends to the server are ButtonXY. No system calls were send over TCP/IP! If someone wants to hack your system, he cannot use this communication. If you configure commands like --cmd01=/bin/rm%20-rf%20/ and set only_from = you might accept to send the server into nirvana ;)

cnremctrl behind a firewall

If your linux server is blocked with iptables(8), you have to install two rules to let pass cnremctrl communication. Example:

  iptables -A INPUT  -i eth0 -s -p tcp --dport 26056 -j ACCEPT
  iptables -A OUTPUT -o eth0 -d -p tcp --sport 26056 -j ACCEPT


-s, --syslog
Log to syslog.
-t, --test
Testmode. No command will be executed but logged.
-l/path/logfile, --logfile=/path/logfile
Log to logfile.
Server command 1. This command will be executed if cnRemCtrl receives Button01 on stdin.


Server command 10. This command will be executed if cnRemCtrl receives Button10 on stdin.
-?, --help
Output help information and exit.
Display brief usage message.




cnremctrl is normally called from xinetd.

For test purposes you can start cnremctrl on commandline. Example:

  cnremctrl -t --cmd01=ls%20-al
As result you should see:
  Testmode: System command "ls -al" not executed


Copyright (c) 2020 Christian Nause-Müller. This software is released for free use under the terms of the GNU General Public License, version 2 or higher.  


Version 0.1.1, January 29, 2020  


Written by Christian Nause-Müller <cn at cntec dot de>
Newest version, the Windows client cnRemoteControl.exe and more information:  





This document was created by man2html, using the manual pages.