Today we’re back with new TNI 2 update. And it’s all about ACTION!
Or, rather, actions: things you can now do remotely to computers in your network right from TNI. But before we jump in, as always, here’s the change-list:
There are a few Standard actions that TNI performs directly (Reboot, Power-off and Wake-on-LAN) as well as Custom actions, where you can use a simple scripting syntax to perform just about any action you need using system routines or third-party utilities.
Let me show you some examples of the latter, starting with the most obvious one. Assume you want to ping an asset using the good ol’ ping.exe routine. You open up cmd.exe and type ping.exe followed by the asset’s IP. Why not automate the task by creating an action:
After putting that in place you just right-click any asset in the network tree to see this:
You get the idea. Now let’s see some variety!
Things like this are now a no-brainer:
But this action is not applicable to non-Windows machines, so why even have it available for Macs or Linuxes, right? Let’s prefix the action definition with a conditional directive.
It makes way more sense this way. Further, we may want to do something like
But this can also be enhanced:
We have a bunch of available conditions that make use of the information TNI knows about a device, and it’s a good idea to use them to remove confusion in a multitude of cases:
OPENXX
— whether the specified port is open.OPENSSHPORT
— this takes the SSH port from the scanner settings.ONLINE
WIN
— whether it’s a Windows device…LIN
— … a Linux device…MAC
— …or a MacOS X device.SSH
— whether the device was scanned via SSH (it could be a Linux, Mac OS X or a FreeBSD device).SNMP
— whether the device was scanned via SNMP.LAN
— whether the device and your PC share the same subnet.And of course you can prefix any of these with a “!
” to make it a negative. E.g. !ONLINE
means “offline”, !WIN
is “anything but Windows” and so on. Also, you can list several conditions under one IF
directive separating them with commas, this will be treated as logical AND. Like so:
Some actions are not supposed to be executed for several devices at once. By default, an action is considered to be aimed at one asset. To make it available when several assets are at gunpoint (or when you right-click a group), you should add the {$MULTI}
directive.
There’s another matter to consider when dealing with multiple devices. The declaration above makes the action applicable to a group of assets if any of them is offline and any of them is in your subnet. While there’s nothing wrong with the former condition (online assets will receive WOL packets too, no big deal), there’s no point in trying to send WOLs beyond the LAN. So, we change the latter condition to all of them are in your subnet by attributing a “!
” after it. As in, LAN!
— mandatory for all!
Now this action seems pretty well-defined.
While most actions will probably do nothing destructive, some of them may be dangerous if used accidentally. Use {$?}
directive for those. It will display a confirmation dialog every time you fire the action. Here we use Sysinternals PSTools to shut a device down. Dangerous, right?
Let’s take it even further. Suppose we have an action to initialize Remote desktop.
Simple enough, but what it will do is open the authorization window and require us to type in the password manually. There’s a better way. We can send the password in there by simulating key-presses!
After the /sendkeys
command you may use:
{$WAIT X}
— this directive will pause the execution by X milliseconds. If you omit this directive, the default pause before sending any keys is one second;{key name}
— simulate pressing a special key. Key name may be one of the following: F1..F10, LEFT, RIGHT, UP, DOWN, ENTER, BACKSPACE, PGUP, PGDN, HOME, END, TAB
.So, in the example above, we virtually type in the password and press Enter. The %PASSWORD%
template will be automatically replaced with the password associated with the asset in your storage.
Speaking about templates.
The following templates in action definitions will get replaced with actual values for each specific asset:
%HOST%
— FQDN, hostname or IP, depending on the Static IP flag%HOSTNAME%
%IP%
%MAC-%, %MAC:%, %MAC%
— MAC-address separated by hyphens, colons or without separators, respectively%SSHPORT%
— SSH port number, as specified in the Scanner settings%USERNAME%
— username from the assigned login%PASSWORD%
— password from the assigned login
And this about sums it up for the actions highlight. You will find most of the actions used above as examples already included, feel free to modify them as you please or delete the ones you don’t need. Don’t be shy and experiment with custom actions, there’s no limit to what you can do using third-party tools and our simple scripting syntax.
How to edit them? Right-click any asset and find the Edit actions button in the Actions submenu. Or go straight to Options » Actions. You’ll find a handy cheat-sheet there (click a value to copy it!) and a big button to open up the definition list in Notepad — the best text editor there is… ish. :)
One last thing. If you can think of anything we’ve missed (a useful condition, directive or template perhaps) then please let us know, we’ll implement it.
Nice UP :)
Can an action be scheduled to run at a particular point in time?
Unfortunately no, but we will look into the possibility of implemeting such feature.