Calling server-command from a remote system

PaperCut NG/MF has a powerful built-in scripting utility called server-command that provides access to dozens of scripting server operations ranging from:

  • allocated extra print quota to user accounts
  • changing user settings
  • scheduling/starting backups
  • creating new accounts on demand

It’s often used by System Administrators in simple scripts such as batch files, shell scripts, or via languages such as VBScript, Python, Perl or Ruby. You can read more about this here

server-command is a local program which must be run directly from the PaperCut NG/MF server as a privileged user (for security reasons). The server command may however be called remotely (from another device) using standard remote command tools. Options include:

Windows using PowerShell (also supports macOS and Linux):

Use the Invoke-Command to run commands on remote machines. When using Linux or macOS then PowerShell remoting over SSH must be used.

Thanks to “Arnold Rimmer” who provided this example

Linux/Novell/Mac:

Use SSH - a secure remote command/shell program. SSH can be run non-interactively in scripts with the use of an authorized public key added under the papercut account’s ~/.ssh/authorized_keys list. Example use:

   ssh papercut@papercutserver "~/server/bin/linux-x64/server-command disable-printer printsrv1 labprinter -1"

Other deprecated Windows alternatives

NOTE: The following Windows specific alternatives are only provided as possible alternatives in case the PowerShell Invoke-Command cmdlet is not supported in your environment.

Windows (any):

Use psexec.exe - a remote command program provided by the Sysinternals team at Microsoft. Example use:

   psexec.exe \\papercutserver "c:\Program Files\PaperCut NG\server\bin\win\server-command.exe" disable-printer printsrv1 labprinter -1

Windows 2008 R2:

Use Windows Remote Management Services. An example:

   winrs -r:[servername] -nop -d:"C:\Program Files (x86)\PaperCut NG\server\bin\win\" server-command.exe rename-user "<old_username>" "<new_username>"

Categories: How-to Articles, Scripting and APIs

Comments