Update - October 2013 - Major update on content, including coverage of 9.5 SP1 and the changes this introduced (such as native 64-bit support for SLES-10).
I - Introduction
As it is regrettably a somewhat counter-intuitive subject matter, I intend to clarify a couple of items relating to *-ix OS's and the LANDesk agentry here.
I will clarify how to install which agent (32-bit vs 64-bit).
I will clarify which agent is supported on which platform (not as simple as you'd think).
I will give a few pointers / useful command-lines for when you are playing around with your *-ix OS.
I will mostly exclude HPUX here, as that platform has its install process documented on the LANDesk community, and the OS requires dedicated hardware, as it cannot be virtualised.
I do not claim to be a *-nix pro, so the below may include a variety of hacks that'd send a *-nix guy into a coma. The below *works* - that's all that this article claims to do.
II - 32-bit LANDesk agent
The most common way of installing the 32-bit LANDesk agent in a test environment requires a mapping to the LANDesk Core Server (or at least a complete copy of LDLOGON / subdirectories), as a combination of scripts pull down the relevant files and install them right away.
The process is as follows:
II.A - Mount a drive to the LANDesk Core and its LDLOGON directory
The 32-bit agent install is essentially a shell-script that is run, with a parameter of the agent-configuration that you want to use. As a result, it is necessary to map a drive to the LANDesk Core server for a manual install.
NOTE on mounting drives:
The exact command line used here will differ from OS to OS - and often from version to version, so I recommend that you check out Section V - DIRECT LINK - further below for details on the Linux distributions I used.
It may save you some considerable frustration.
I will refer to this share as "/mnt/Core/" from now on. Please substitute / amend the command-lines for whatever mount-name(s) you use.
II.B - go to the mounted directory
In other words, run:
cd /mnt/Core
II.C - From the mounted LDLOGON share run the installer
As previously mentioned, the 32-bit installer is essentially a shell-script - linuxpull.sh - which needs to be fed your desired agent-configuration's INI filename as a parameter.
./linuxpull.sh (AGENTCONFIG).ini
A real example for a 32-bit Linux configuration called "32_bit_Linux" would be for instance:
./linuxpull.sh 32_bit_Linux.ini
Note that this will require ROOT-level privileges.
This will install the agent. No inventory / vulscan takes place. You're done once the script is finished.
IMPORTANT DETAIL ON WHICH FILE YOU USE
Please note that you are using the ".INI" file here, and not the ".SH" !
You may want to consider running either an inventory scan at this point, or even an inventory scan followed by a vulnerability scan right away, so you have the device register with your LANDesk Core as soon as possible.
NOTES ON 32-BIT AGENT INSTALLS:
* As a rule, the 32-bit agent install will run an inventory scan at the end of the install (you will see the output on the screen).
* VULSCAN will not be run "by default" as part of the installation - once the inventory is on the Core, you might wish to kick this off yourself.
III - 64-bit LANDesk agent
There are a few differences between the 32-bit and 64-bit agents and their installations.
One of the first is that whilst the 64-bit agent WILL run an inventory scan as part of the install (after the install script itself has finished), this isn't as visible as it is with the 32-bit agent. Rather, it isn't visible at all. Whilst the 32-bit agent is pretty vocal about what it is doing to the display, the 64-bit agent is not - scheduled jobs run silently in the background.
The purpose here is to get an inventory scan ASAP to the Core, so that we can register the existence of the new device.
An easy trap to fall into is to assume that "if the OS is 64-bit, then I should install the 64-bit client". That is not so. Please see Section VI - DIRECT LINK - below to install the correct agent on the correct OS.
III.A - Mount a drive to the LANDesk Core and its LDLOGON directory / wherever the install binaries are
Whilst not a requirement with the 64-bit agent (there are alternative ways to get to the files), I will still assume that for most situations as part of your test-bed, you will map a drive to the Core directly.
NOTE on mounted drives:
The exact command line used here will differ from OS to OS - and often from version to version, so I recommend that you check out Section V - DIRECT LINK - further below for details on the Linux distributions I used.
It may save you some considerable frustration.
III.B - Copy the required files down locally
These files are the following:
- The "(HASHVALUE).0" certificate file out of the Core's LDLOGON-directory
- The "(AGENTCONFIG).sh" shell-script file out of the Core's LDLOGON-directory
- The "BASECLIENT64.TAR.GZ" tarball out of the Core's LDLOGON\UNIX\(OSPLATFORM)\ -directory
- The "VULSCAN64.TAR.GZ" tarball out of the Core's LDLOGON\UNIX\(OSPLATFORM)\ -directory
So, for example, a real list of files (for a 64-bit Linux OS) for a 64-bit Linux agent configuration called "Linux_64_bit" would be:
- The "d4edf38c.0" certificate file out of the Core's LDLOGON-directory
- The "Linux_64_bit.sh" shell-script file out of the Core's LDLOGON-directory
- The "BASECLIENT64.TAR.GZ" tarball out of the Core's LDLOGON\UNIX\LINUX\ -directory
- The "VULSCAN64.TAR.GZ" tarball out of the Core's LDLOGON\UNIX\LINUX\ -directory
For any of the supported LINUX distributions, you need to go into LDLOGON\UNIX\LINUX\ .
For SOLARIS, you need to go into LDLOGON\UNIX\SOLARIS\ .
For HP-UX, you need to check out LDLOGON\UNIX\HPUX\ .
III.C - Grant the install-script execution rights
You do this by running the following command on the installer-script:
chmod +x (AGENTCONFIG).sh
So a real example would look like so:
chmod +x Linux_64_bit.sh
IMPORTANT DETAIL ON WHICH FILE YOU USE
Please note that you are using the ".SH" file here, and not the ".INI" !
III.D - Run the installer-script
You just need to execute it by running
./(AGENTCONFIG).sh
So a real example would appear like so:
./Linux_64_bit.sh
The installer will now run, and when you see the CLI (Command Line Interface) available to you again, the installation will be finished. Note that this will require ROOT-level privileges.
NOTES ON 64-BIT AGENT INSTALLS:
* As a rule, the 64-bit agent install will start an inventory scan as part of the install. So there's no need to start another LDISCAN command - it's already scheduled as a job.
* VULSCAN will not be run "by default" as part of the installation - once the inventory is on the Core, you might wish to kick this off yourself.
IV - Key differences / crucial reminders between 32-bit vs 64-bit agent installs
Category | 32-bit Agent | 64-bit Agent |
---|
Main directory for binaries | /usr/LANDesk/ldms | /opt/landesk/bin |
Verbosity options affect | More data output to screen primarily for LDISCAN VULSCAN will log more data into log-file | More detail added to log-files |
Command-line parameters | Check the binary's "-h" option for details | Check the binary's "-h" option for details |
LANDesk Software Distribution capability? | Yes. SDCLIENT is included as part of the agent install | No. There is no SDCLIENT for the 64-bit agent at present |
Remote Execution Capability From LD Core | Yes | Yes |
Requires Access To Core To Install Agent? | Yes (well-sort of). It's just easier if you do have access. Install accesses various files under LDLOGON UPDATE (May 2013): Not always actually. You can ask me for info if needed | No. Just access to the 4 install-files is needed. |
How Are Executables Run? | LDISCAN and VULSCAN execute directly and are finished when they return the command-prompt to you. | LDISCAN and VULSCAN create a "job" (in /opt/landesk/jobs) which is then started by the LANDesk Scheduler (MAP-SCHEDULER) which runs the "actual" inventory/vulnerability scan. |
How is Inventory Collected? | LDISCAN collects everything itself. | The inventory scan is broken up into a variety of binaries. One scans memory, another scans CPU information, another scans the filesystem,etc.. The output from the various "part"-scans is then collated at the end. This makes debugging much more modular. Usually takes longer to run an inventory scan as a result, compared to 32-bit agent. |
Notes On Architecture | None. | MAP (Management Agent Platform)-architecture. Everything hooks into the map-scheduler/map-scraper. |
Ability To Have Custom Data? | No. Well - sort of "no". Not "out of the box". This CAN be worked around by creating an output-file and then adding the desired custom data to the resultant output- file before copying/sending it to the Core for processing. An inventory scan is just a text-file at the end of the day. | Yes. The Inventory scanner will add data from "/opt/landesk/var/customdata/" automatically to the inventory scan sent to the Core. The file(s) in this directory must be XML-formatted. (An article explaing things can be found in community DOC-31132) |
| | |
A note on "requiring Core Access"
Core-server access is only really required if either the "push"-based install, or this "pull"-based approach is used.
One *CAN* get around "requiring" Core Access, by copying files, or even repackaging RPM's. If the relevant *-NIX-expertise i availble, then the sky is the limit.
This article is merely intended to "help you get started" and assumes very limited exposure to *-NIX OS's, thus we try to keep things reasonably straight forward.
V - Hints, tips, command-line help and OS-specific things
For the purpose of the below, I'm assuming that a "Core" subdirectory has been created under "/mnt" that we will be mounting to. If you use a different directory, please amend the command-lines as needed.
V.A - SOLARIS
V.A.1 - Getting the agent binaries on a Solaris box
Despite banging my head for hours against the desk, looking at a plethora of help-files and talking to Adam, I've not been able to get Solaris to play ball and successfully connect to the LDLOGON share on a Windows Core.
Two fairly simple workarounds exist however:
Solaris Install Option 1 - Use a browser
Use a browser to browse to HTTP://CORE_NAME_OR_IP/LDLOGON/ and then copy down the .0-cert / the .SH-script.
Then copy the BASECLIENT64.TAR.GZ and VULSCAN64.TAR.GZ binaries from HTTP://CORE_NAME_OR_IP/LDLOGON/UNIX/SOLARIS/ and finally run the install with the locally downloaded files (remember to "chmod +x" the .SH-file!).
SOLARIS 10 will generally still have Firefox as a browser installed, at the very least.
Note
Solaris does *NOT* come with WGET by default. So you do need to actually use a browser.
- or -
Solaris Install Option 2 - SCP / FTP
Copy the necessary binaries to a cooperative Linux-box, and then use SCP (Secure Copy) to grab the files from the Linux box (I usually use Red Hat 5, as that is pretty benign for the most part).
SCP will have a few examples in Section VIII.A (useful commands -- DIRECT LINK), further below.
Alternatively, if you have an FTP-server or similar, you can just store the files there and pull them down with the Solaris box that way.
Pick your personal poison based on preference.
V.A.2 - SOLARIS and hostnames
Counter to intuition (as the OS install *DOES* ask you whether you wish to specify an OS name during the install), it actually takes a few extra steps to have a SOLARIS box "properly" report a hostname (that is, something other than "localhost.localdomain").
Here's what you need to do:
1 - go to the "/etc" directory
2 - create a file called "nodename" with a line containing the name of the device. I.e. - something like "mysolaris10x64" for instance. The following command would do just this:
gedit /etc/nodename
IMPORTANT -- end the line with a carriage return (i.e. "enter") or this will not work properly.
3 - save the file.
4 - Reboot the box.
REMEMBER -- *-ix is case sensitive.
And now you will have a proper network name come in through inventory
Do remember though, that you still need IP-details in "/etc/hosts", so that the box can resolve its own name!
NOTE:
I was originally led to believe that one could fix this "localhost" reporting problem by hacking around in the "/etc/hosts" file alone.
You may indeed find various forum-threads suggesting this - it is a bald-faced lie (at least it is in Solaris 10). The "nodename"-approach above is what actually works.
FINAL NOTE:
The above instructions only function for a Solaris install where you are in a X-Windows environment. If you just have a CLI (command-line interface) available to you, the following command line should help you get the required file created:
echo "(YOUR_CHOSEN_HOSTNAME)" > /etc/nodenme
"Real" example:
echo "Solaris-10-64" > etc/nodenme
This will also then include the necessary "carriage return" at the end of the "nodename"-file.
V.A.3 - SOLARIS and LANDesk 9.0 library requirements
No libraries are required, since they're included for Solaris as part of the agent install. Installing the LANDesk agent will put the following libraries into "/opt/landesk/lib/":
- libcrypto.so
- libcrypto.so.0.9.8
- libgcc_s.so.1
- libssl.so
- libssl.so.0.9.8
- libstdc++.so.6
V.A.4 - SOLARIS and LANDesk 9.5 library requirements
At present, the LANDesk 9.5 (with no SP) install does NOT put down libraries, but does seem to require them.
The reason we provided the libraries in 9.0 (and earlier versions of LANDesk) was that they were usually a royal pain to locate.
UPDATE (June 2013):
This is resolved as of SP1 for 9.5 at the very least - the necessary librarires are put down again and the install proceeds as expected.
V.A.5 - Solaris 10 and supported update versions
Do make sure that you are using Solaris 10 64-bit update 8 or newer. Older version (i.e. - Update 7 for instance) will have problems and - most likely - fail to install at all.
The baseline officially set by LANDesk Management Suite 9 and 9.5 for Solaris 10 is update 8.
V.B - RedHat / CentOS
EXPECTATION FOR THIS PART:
For all the below commands, I assume that your client can resolev the network name (be it 'short' name or FQDN) of your Core. Depending on whether you have DNS set up (you may not), remember that you can add static entries to map network-name(-s) to IP(-s) in "/etc/hosts"!
V.B.1 - Mounting a drive in Red Hat 4
Mapping to a SMB-share in Red Hat 4 uses "smbmount" with the following basis:
smbmount //(CORENAME)/ldlogon /mnt/Core -o username=AUSERNAME,password=THEPASSWORD
"Real" example:
smbmount //my90core/ldlogon /mnt/Core -o username=administrator,password=pw
You can choose NOT to include the ",password=..." (note the comma) part of the command-line, it's just a matter of convenience if you don't want to type it in separately as you're prompted for it.
In Red Hat 4 (and mostly "only" Red Hat 4), this does work, whilst I've had to drop that parameter off for other / newer distributions.
V.B.2 - Mounting a drive in Red Hat 5 / 6
RedHat 5 and 6 no longer have "smbmount", so instead we need to make use of "mount" with the following basis for a command-line:
mount //(CORENAME)/ldlogon /mnt/Core -t cifs -o username=AUSERNAME
"Real" example:
mount //my90core/ldlogon /mnt/Core -t cifs -o username=administrator
... and then enter te password as you're prompted for it.
V.B.3 - Mounting a drive in CentOS 5 / 6
CentOS also uses "mount", but the command-line used with Red Hat never worked for me here. So we had to adapt and use the "-cifs" flag as a basis for the mounting.
mount //(CORENAME)/ldlogon /mnt/Core -t cifs -o username=AUSERNAME
"Real" example:
mount //my90core/ldlogon /mnt/Core -t cifs -o username=administrator
... and then enter the password as you're prompted for it.
V.B.4 - Remember your firewalls
On RedHat 6 (and I believe, CentOS 6 - by extension), the IPTABLES firewall is installed by default. Make sure to remember to either turn it off completely or add the relevant holes into the firewall so that the LANDesk ports can talk from the Core to the client.
V.C - SLES - SUSE Linux Enterprise Server
V.C.1 - Mounting a drive in SLES 9 / 10 / 11
This is pretty straight forward and consistently works across version 9, 10 and 11 of SLES. Here's the basis for your "mount" command-line:
mount //(CORENAME)/ldlogon /mnt/Core -t cifs -o username=AUSERNAME
"Real" example:
mount //my90core/ldlogon /mnt/Core -t cifs -o username=administrator
... and then enter the password as you're prompted for it.
V.C.2 - SLES 9 specific install information
There are some required libraries that the LANDesk agent requires for SLES 9, which are NOT part of the default OS install. So you must make sure that you've got access to the SLES 9 SP4 CD's relevant to your distribution (32-bit or 64-bit, respectively).
SLES 9 requires the following libraries (applicable to both 32-bit and 64-bit versions of the OS) which are included in SP4 for SLES 9):
- libstdc++.so.6
- libstdc++.so.6(CXXABI_1.3)
- libstdc++.so.6(GLIBCXX_3.4)
REMEMBER:
You will only be able to access service packs / updates to SLES via a support subscription. These files are not freely available on the net.
All the required files are included in a RPM-library on CD # 1 of SP4 for SLES 9 (this is true for both 32-bit and 64-bit versions of the SP 4 CD's).
Here are the instructions for what you need to do for a SLES 9 32-bit system:
SLES 9 32-bit instructions:
1 - Insert SLES 9 32-bit SP4 CD #1
2 - go to the directory "/suse/i586" wherever you have SP4 stored. If you have it on a physical media / ISO, this would look like this:
cd /media/dvdram/suse/i586
3 - then run:
rpm -i -v compat-libstdc++-lsb-4.0.2_20050901-0.4.i586.rpm
to install the C++ compatibility libraries. On a default install, this should go without a problem.
SLES 9 64-bit has slightly altered paths and a slightly different RPM-package name:
SLES 9 64-bit instructions:
1 - Insert SLES 9 64-bit SP4 CD #1
2 - go to the directory "/suse/x86_64" wherever you have SP4 for 64-bit SLES 9 stored. If you have it on a physical media / ISO, this would look like this:
cd /media/dvdram/suse/x86_64
3 - then run:
rpm -i -v compat-libstdc++-lsb-4.0.2_20050901-0.4.x86_64.rpm
to install the C++ compatibility libraries. On a default install, this should go without a problem.
Once those libraries are installed, you can install the LANDesk agent on your SLES 9 box. Again, remember that you install the 32-bit LANDesk binaries on SLES 9 - whether you have a 32-bit or a 64-bit OS.
V.C.3 - SLES 9 hostname/network name information
SLES 9 needs to have its hostname configured after the OS-install, similar to SOLARIS 10.
Otherwise it will just show up as a host called "Linux" in your LANDesk Management Suite console, which isn't overly helpful.
Here's what you need to do.
1 - Edit the "/etc/HOSTNAME" file with your edit of choice. For those not fluent in "vi", and more comfortable with a GUI, "kate" is the default text-editor installed on a "default"-SLES 9 install.
So run (remember - this is case sensitive!):
kate /etc/HOSTNAME
2 - As you edit the file, enter your desired hostname - such as "SLES-9-32BIT" for instance, save the file. By default, you should see a hostname of "linux.site" when you open the file.
IMPORTANT REMINDER -- the file must only have ONE line (just the host name) and a carriage return ("enter") at the end of the first line!
3 - Reboot the client (can be done via running "reboot" without arguments).
4 - You're done. The change should be applied now.
SLES 10 and 11 prompt you for a hostname during the installation of the OS and retain that one correctly, this is just something to bear in mind with SLES 9.
V.D - Alternative options to get the files you need to install the 64-bit LANDesk agent
V.D.1 - Using WGET instead of mounting a share
"WGET" is a command-line utility that most (if not all?) *-ix distros have. It's a great way to download files from HTTP/HTTPS shares. Since LDLOGON (and its sub-directories) are HTTP-shares, this can be a great life-saver (in particular when it comes to Solaris, as that REALLY makes life difficult when trying to connect it to Windows).
Pro's:
- No need to have libraries installed to make SMBFS shares.
- No authentication problems of any kind, since you're "simply" going over HTTP.
Con's:
- You CANNOT use wildcards over HTTP (so you MUST know the exact certificate filename and agentconfig ".sh" name). This makes it impossible to have a nice "generic" script using WGET if you have to operate with multiple LANDesk Cores.
WGET is easy to use. An example "process" of getting the files this way would be like this:
1 - create a temporary directory and enter it
cd /
mkdir zztemp
cd zztemp
2 - download the files needed (in this example, the LANDesk Core is "Solitude" and we're downloading the files for an installation on Linux). The command-line "as is" will download the files into whatever is the current directory.
wget http://solitude/ldlogon/91543e62.0
wget http://solitude/ldlogon/64_bit_Linux.sh
wget http://solitude/ldlogon/unix/linux/baseclient64.tar.gz
wget http://solitude/ldlogon/unix/linux/vulscan64.tar.gz
3 - give the install script execution rights
chmod +x 64_bit_Linux.sh
4 - Finally, start the install
./64_bit_Linux.sh
V.D.2 - Using a browser
You can just browse to "http://CORE_NAME_OR_IP/ldlogon/" and download the "(CERTHASH).0" cert-file from there, as well as the "(AGENTCONFIG).sh" file from there, and then the relevant "baseclient64.tar.gz" and "vulscan64.tar.gz" from the relevant subdirectory of LDLOGON (for instance -- "http://CORE_NAME_OR_IP/ldlogon/unix/linux/").
This of course assumes that you have a GUI of some sort available to you, which isn't necessarily always the case.
The last steps (running the "chmod"-command on the .SH-script file and then executing the .SH-script) are identical, by and large it's a matter of personal preference how you get the files down onto the *-ix box in the first place.
V.D.3 - Keeping the install files on a repository
Pro's:
- Easy to access (may just need a simple mount, no dependency on having SMB-libraries).
- Can be accessed by SCP, FTP or whatever you prefer, depending on how you set it up.
- Scriptable
Con's:
- Must be maintained (agent binaries can be updated on the Core / agent configs may change). Change control is important.
V.D.4 - At the end of the day ...
The only thing that really matters is "getting the files on the box" - which you could theoretically even do by thumb-drive, if you're so inclined. One the files are available locally (again - remember the "chmod +x ..." command on the .SH-script file), the installer just needs to be run with sufficient privileges, and you are good to go.
VI - Which OS platform uses which LANDesk agent exactly (32-bit or 64-bit)?
Since the 64-bit MAP agent was only coded relatively recently, it doesn't support a number of older/"legacy" OS's, as the 32-bit LANDesk agent was expanded to cover those at the time.
To help keep things clearer, the table below as to which Linux platform/distro is supported by which LANDesk agent.
OS Platform | OS Bitness | Supported LDMS Agent | Notes |
---|
Red Hat Enterprise Linux 4 | 32-bit | 32-bit | This OS is no longer supported in 9.5 No longer an actively supported platform as of 9.0 SP4, but files are still included.
|
Red Hat Enterprise Linux 4 | 64-bit | install 32-bit agent | This OS is no longer supported in 9.5 No longer an actively supported platform as of 9.0 SP4, but files are still included. |
Red Hat Enterprise Linux 5 | 32-bit | 32-bit | |
Red Hat Enterprise Linux 5 | 64-bit | 64-bit | |
Red Hat Enterprise Linux 6 | 32-bit | 32-bit | Supported in 9.5 (release)
Supported with 9.0 SP4
|
Red Hat Enterprise Linux 6 | 64-bit | 64-bit | |
| | | |
Cent OS 5 | 32-bit | 32-bit | |
Cent OS 5 | 64-bit | 64-bit | |
Cent OS 6 | 32-bit | 32-bit | Supported in 9.5 (release)
Supported with 9.0 SP4
|
Cent OS 6 | 64-bit | 64-bit | Supported in 9.0 as of 9.0 SP4
Will be supported as of 9.5 SP1
|
| | | |
SUSE Linux Enterprise Server 9 | 32-bit | 32-bit | This OS is no longer supported in 9.5 No longer an actively supported platform as of 9.0 SP4, but files are still included. |
SUSE Linux Enterprise Server 9 | 64-bit | install 32-bit agent | This OS is no longer supported in 9.5 No longer an actively supported platform as of 9.0 SP4, but files are still included. |
SUSE Linux Enterprise Server 10 | 32-bit | 32-bit | |
SUSE Linux Enterprise Server 10 | 64-bit | install 32-bit agent | Up to 9.0 SP3 - install 32-bit agent 9.5 (no SP) - install 32-bit agent
|
SUSE Linux Enterprise Server 10 | 64-bit | 64-bit | As of 9.0 SP4, this platform is supported with a native 64-bit agent As of 9.5 SP1, this platform is supported with a native 64-bit agent |
| | | |
SUSE Linux Enterprise Server 11 | 32-bit | 32-bit | Supported in 9.5 (release)
Supported with 9.0 SP4
|
SUSE Linux Enterprise Server 11 | 64-bit | 64-bit | |
| | | |
Solaris 10 | 32-bit | NOT SUPPORTED | NOT SUPPORTED |
Solaris 10 (SPARC 64 / x86 64-bit) | 64-bit | 64-bit | |
| | | |
LEGEND:
COLOUR | MEANING |
---|
TEXT | 64-bit LANDesk agent on a 64-bit OS |
TEXT | 32-bit LANDesk agent on a 32-bit OS |
TEXT | 32-bit LANDesk agent on a 64-bit OS |
| |
TEXT | Uncertain - clarifying support/situation |
TEXT | Not a supported OS |
{SNIP'ing off a lot of older, historical information. The below posts summarise more recent developments of relevance}
UPDATE (As of March 6th 2013):
9.0 SP4 introduces a couple of changes:
- RHEL 4 (32-bit and 64-bit) are no longer supported platforms, because the OS has gone end-of-life.
- SLES 9 (32-bit and 64-bit) are no longer supported platforms, because the OS has gone end-of-life.
- SLES 10 64-bit is now natively supported with the 64-bit MAP agent, no longer needing the 32-bit agent to be installed.
- Support was added for CentOS 6 (32-bit and 64-bit).
- Support was added for RHEL 6 (32-bit).
UPDATE (As of March 25th 2013):
Clarified what the situation will be for SLES 10 64-bit for 9.5.
=> 9.5 release -- install 32-bit agent.
=> 9.5 SP1 -- will include a full, native 64-bit agent much like 9.0 SP4 does
VII - Quick overview of the key LANDesk commands in *-ix:
VII.A - An important point on syntax and details.
There are some small but important differences between 32-bit and 64-bit LANDesk agent command-line options. Thus - if in doubt - run the relevant command with the "-h" parameter to get the help-screen on your particular binary and find out how the command-line should be constructed, exactly. They are at this point in time not identical, an important detail to bear in mind.
VII.B - 32-bit LANDesk agent commands
VII.B.1 - Running an inventory scan with maximum verbosity
Generally one will not require to run either inventory or vulnerability scans with maximum verbosity enabled. The most common reason to do this is as part of troubleshooting some sort of problem.
Hence the focus on enabled/maximum verbosity here.
Basic command-line:
ldiscan -f -ntt=CORENAME_OR_IP:Port -V
The default port used for the LANDesk inventory service is 5007. This setting is based on what is configured for the Inventory Service on the LANDesk Management Suite Core (Configure Services). Generally, it's rarely deviated from.
"Real" command-line:
./ldiscan -f -ntt=192.168.92.150:5007 -V
Output to a file:
./ldiscan -f -V -o=MyOutput.txt
REMEMBER:
The 32-bit binaries are located in:
""
/usr/LANDesk/ldms/
""
VII.B.2 - What are the key parameters for the 32-bit inventory scanner?
Command Line Parameter | Detailed Description | Function / Effect |
---|
-f | {MINUS} {LOWERCASE F} | Forces a full software scan |
-f- | {MINUS} {LOWERCASE F} {MINUS} | Forces the scanner *NOT* to perform a software scan |
-ntt=CORENAME_OR_IP:PORT-NUMBER | {MINUS} {LOWERCASE NTT} {EQUAL} {SERVERNAME_OR_IP} {COLON} {PORTNUMBER} | Indicates which Core to talk to, and which port to use By default, the port should be "5007". This is NOT a required switch. If this is not used, the client will communicate with its default Core (as per the setting in the LANDESK.CONF) |
-V | {MINUS} {UPPERCASE V} | Enables full verbosity (on screen) |
-v | {MINUS} {LOWERCASE V} | Display version information and exit |
-o=PATH/FILENAME | {MINUS} {LOWERCASE O} {EQUAL} {PATH/FILENAME} | Create an outputfile called FILENAME of the inventory scan. You may include a path with the filename if desired. If no path is specified, the output-file will be created in the current directory |
-h | {MINUS} {LOWERCASE H} | Displays the help / command-line options |
You can get a list of all parameters by running
./ldiscan -h
REMEMBER:
The 32-bit binaries are located in:
/usr/LANDesk/ldms/
VII.B.3 - Running a vulnerability scan with maximum verbosity
Generally one will not require to run either inventory or vulnerability scans with maximum verbosity enabled. The most comment (effectively - only?) reason to do this is as part of troubleshooting some sort of problem.
Thus the focus on enabled/maximum verbosity here.
./vulscan -c CORENAME -V255
Note that "-c CORENAME" is optional and not required. By default, the LANDesk agent will send the vulnerability scan to whatever Core (DNS-name or IP) is configured in the "landesk.conf" file in "/opt/landesk/etc/". That said, it's a good habit to get into while testing in a lab environment, so that you are sure just which Core you're sending the vulnerability scan to, if you have several LANDesk Core Servers in use.
REMEMBER:
The 32-bit binaries are located in:
/usr/LANDesk/ldms/
VII.B.4 - What are the key parameters for the 32-bit vulnerability scanner?
Command Line Parameter | Detailed Description | Function / Effect |
---|
-c CORENAME_OR_IP | {MINUS} {LOWERCASE C} {CORENAME OR IP-ADDRESS} | Specifies which Core server to talk to for vulnerability information and where to send the results. This is NOT a required switch. If this is not used, the client will communicate with its default Core (as per the setting in the LANDESK.CONF) |
-V### | {MINUS} {UPPERCASE V} {NUMERICAL VALUE 1 - 255} | Set the verbosity level added to the VULSCAN.LOG. Use "255" for maximum verbosity |
-v | {MINUS} {LOWERCASE V} | Display version information and exit |
-o PATH/FILENAME | {MINUS} {LOWERCASE O} {SPACE} {PATH/FILENAME} | Create an outputfile called FILENAME of the vulnerability scan. You may include a path with the filename if desired. If no path is specified, the output-file will be created in the current directory |
-h | {MINUS} {LOWERCASE H} | Displays the help / command-line options |
You can get a list of all parameters by running
./vulscan -h
REMEMBER:
The 32-bit binaries are located in:
/usr/LANDesk/ldms/
VII.C - 64-bit LANDesk agent commands
VII.C.1 - Running an inventory scan with maximum verbosity
Generally one will not require to run either inventory or vulnerability scans with maximum verbosity enabled. The most comment (effectively - only?) reason to do this is as part of troubleshooting some sort of problem.
Thus the focus on enabled/maximum verbosity here.
Basic command-line:
ldiscan -f -ntt=CORENAME_OR_IP -V 255
Why is no port needed for the 64-bit inventory scanner?
The 64-bit MAP agent's inventory scanner doesn't talk to the Inventory Service directly, in the way that the 32-bit inventory scanner does. Instead, it's talking to a web-service, thus there's no requirement on specifying a port.
Watch your space(-s)
Pay attention to syntax. Note that the 64-bit version of LDISCAN requires a "-V 255" - with a space - for maximum verbosity!
"Real" command-line:
./ldiscan -f -ntt=192.168.92.150 -V 255
Output to a file:
./ldiscan -f -V 255 -o MyOutput.txt
Again - note that for an output in this case, you require a syntax of "-o OUTPUTFILE" (with a space) and not "-o=OUTPUTFILE" (no space, but an '=') as you do with the 32-bit scanner.
The 64-bit inventory scanner logs its activites into the "landesk.log" file (under "/opt/landesk/logs/").
Also note that the inventory scanner isn't really a single binary/process in the 64-bit MAP agent anymore. Rather it's a series of different executables that are run sequentially and whose output is then collated into an inventory scan. Separate processes exist for collecting software, collecting CPU information, scanning memory, collecting network information and so on.
These indivual scanners can be executed one at a time for troubleshooting purposes, if need be, to help you narrow down where a problem arises.
REMEMBER:
The 64-bit binaries are located in:
/opt/landesk/bin/
VII.C.2 - What are the key parameters for the 64-bit inventory scanner?
Command Line Parameter | Detailed Description | Function / Effect |
---|
-f | {MINUS} {LOWERCASE F} | Forces a full software scan |
-f- | {MINUS} {LOWERCASE F} {MINUS} | Forces the scanner *NOT* to perform a software scan |
-ntt=CORE_OR_IP | {MINUS} {LOWERCASE NTT} {EQUAL} {SERVERNAME_OR_IP} | Indicates which Core to talk to. NOTE THAT YOU DO NOT NEED TO SPECIFY A PORT This is NOT a required switch. If this is not used, the client will communicate with its default Core (as per the setting in the LANDESK.CONF) |
-x | {MINUS} {LOWERCASE X} | Enables software scanning of network file systems (such as NFS or SMBFS). This is disabled by default WARNING: Careless use of this can have massive impact. Be mindful when enabling this on servers connected to massive file-servers, for instance. |
-h | {MINUS} {LOWERCASE H} | Displays the help / command-line options |
-v | {MINUS} {LOWERCASE V} | Display version information and exit |
-V ### | {MINUS} {UPPERCASE V} {SPACE} {NUMERICAL VALUE 1 - 255} | Set the verbosity level added to the LANDESK.LOG. Use "255" for maximum verbosity |
-o PATH/OUTPUTFILE | {MINUS} {LOWERCASE O} {SPACE} {PATH/FILENAME} | Create an outputfile called FILENAME of the vulnerability scan. You may include a path with the filename if desired. If no path is specified, the output-file will be created in the current directory |
You can get a full list command-line options by running:
./ldiscan -h
REMEMBER:
The 64-bit binaries are located in:
/opt/landesk/bin/
VII.C.3 - Running a vulnerability scan with maximum verbosity
Generally one will not require to run either inventory or vulnerability scans with maximum verbosity enabled. The most comment (effectively - only?) reason to do this is as part of troubleshooting some sort of problem.
Thus the focus on enabled/maximum verbosity here.
./vulscan -c CORENAME -V 255
Note that "-c CORENAME" is optional and not required.
By default, the LANDesk agent will send the vulnerability scan to whatever Core (DNS-name or IP) is configured in the "landesk.conf" file in "/opt/landesk/etc/". That said, it's a good habit to get into while testing in a lab environment, so that you are sure just which Core you're sending the vulnerability scan to, if you have several LANDesk Core Servers in use.
REMEMBER:
The 64-bit binaries are located in:
/opt/landesk/bin/
VII.C.4 - What are the key parameters for the 64-bit vulnerability scanner?
Command Line Parameter | Detailed Description | Function / Effect |
---|
-c CORENAME_OR_IP | {MINUS} {LOWERCASE C} {CORENAME OR IP-ADDRESS} | Specifies which Core server to talk to for vulnerability information and where to send the results. This is NOT a required switch. If this is not used, the client will communicate with its default Core (as per the setting in the LANDESK.CONF) |
-o PATH/FILENAME | {MINUS} {LOWERCASE O} {SPACE} {PATH/FILENAME} | Create an outputfile called FILENAME of the vulnerability scan. You may include a path with the filename if desired. If no path is specified, the output-file will be created in the current directory |
-v | {MINUS} {LOWERCASE V} | Display version information and exit |
-V ### | {MINUS} {UPPERCASE V} {SPACE} {NUMERICAL VALUE 1 - 255} | Set the verbosity level added to the VULSCAN.LOG. Use "255" for maximum verbosity |
-h | {MINUS} {LOWERCASE H} | Displays the help / command-line options |
You can get a list of all parameters by running
./vulscan -h
REMEMBER:
The 64-bit binaries are located in:
/opt/landesk/bin/
VII.D - Relevant log files/configuration files and their locations
The locations of certain key log-files vary between the 32-bit and the 64-bit agent architectures. In order to have a single place where one can reference log-file location, the following table has been created:
FILENAME | PURPOSE | 32-BIT AGENT LOCATION | 64-BIT AGENT LOCATION |
---|
vulscan.log | Log-file for the vulnerability scanner. Contains detailed information on what vulnerability was or wasn't detected (and why). Also contains communications information (i.e. "couldn't contact the Core"). Use the verbosity command-line switch to enable logging of any significance | /var/log/vulscan.log | /opt/landesk/logs/vulscan.log |
landesk.log | "default" log of LANDesk activities. Primary log for the inventory scanner. | N/A - exists only on 64-bit agent | /opt/landesk/logs/landesk.log |
scheduler.log | Details the acitivies / jobs that are run by the LANDesk scheduler on the client. With the 64-bit MAP agent, all jobs (vulnerability scans, inventory scans, etc.) are launched by this scheduler | N/A - exists only on 64-bit agent | /opt/landesk/logs/scheduler.log |
| | | |
messages | CBA and PROXYHOST messages go here. I.e. - anything sent from the Core that tells the client to do something. This is the *-ix equivalent of the "SERVICEHOST.LOG" and "PROXYHOST.LOG" of Windows clients (NOTE - this is *NOT* a "LANDesk only" log, but an OS-log file. CBA log entries just happen to be inserted here) | /var/log/messages | /var/log/messages |
| | | |
landesk_client_install.log | Log of the installation of the LANDesk agent | /var/log/landesk_client_install.log NOTE: Further debug information is also available to be enabled (same process as for 64-bit agents) | N/A - not enabled by default Must be enabled via debug mode Infos on how to do this will be put into a separate article
|
landesk.conf | LANDesk agent configuration file. Contains information on the Core, the clients' device ID and such. NOTE - the file does *NOT* get deleted when you uninstall the client. This is so the client retains its device-id during upgrades Please be CAREFUL when playing around with this file (it's not advised and you can break the client). NOTE the somewhat complicated situation for the 32-bit agentry. For LANDesk version 8.x, we "only" have the "/etc/ldiscnux.conf" file As of version 9.0 we have the "/etc/ldiscnux.conf" AS WELL AS "/opt/landesk/etc/landesk.conf" | For 9.0 agents and up, we have (in addition to the below file): /opt/landesk/etc/landesk.conf NOTE - There is also this file is here (used to be the 8.x file): /etc/ldiscnux.conf Be watchful of *BOTH* as it seems unclear as to which file gets used for what. | /opt/landesk/etc/landesk.conf |
ldappl.conf | The LDAPPL.CONF is the *-IX equivalent of the LDAPPL3-files for windows - essentially configuring how the inventory scanner behaves. This includes such things such as "what directories should be excluded" from scanning, and "Mode=Listed" versus "Mode=All" settings. IMPORTANT NOTE: As of the time of this writing (May 2013), the 9.0 SP4 based 64-bit NIX agent effectively still ignores changes made to the LDAPPL.CONFon the core (for instance - I enabled "mode=all" scanning, and no changes happened to the new scan-files. On the up-side, I could see that the map-fetchldappl DID pull down the altered LDAPPL.CONF itself. Effectively, this means that at present this file is only relevant for 32-bit devices. | /etc/ldappl.conf | Gets pulled from the Core at each inventory scan by "/opt/landesk/map-fetchldappl" from the core's: "HTTP://<NAME>/ldlogon/unix/common/" directory The file exists on the client only briefly before being deleted (after being ignored, apparently). |
VIII - Useful *-ix commands and other notes
The following is an introduction into some of the more useful commands available in a variety of *-ix operating systems. To anyone spending any significant time with *-ix, this may appear like me trying to teach someone how to suck eggs - it's not targeted at folk who are comfortable/familiar with *-ix. This is primarily for folks who have little to no real experience with *-ix - and thus serves as a "leg up" to help with a potentially otherwise unfamiliar OS.
VIII.A - SCP (mainly of use for SOLARIS)
As mentioned previously, SOLARIS can be quite difficult and/or uncooperative in regards to connecting to a Windows-share. As a workaround, you can use "SCP" (Secure Copy) to copy files from/to a "more cooperative" *-ix distribution, and move the files from there to the Windows box via a proper mapping.
SCP is very easy to use (assuming you have the relevant credentials). In the examples here, I'll be using "root"-access (which is a "no-no" in the real world, but a matter of convenience in a lab environment).
So ammend your command-lines as required.
The basic syntax for SCP is as follows:
scp (PATH/FILENAME) (REMOTE_USERNAME)@(REMOTE_DEVICENAME):(OPTIONAL_PATH)
So, if we were to copy a file called "InvOut.scn" from our current directory to a box called "RHEL4-32" into a directory called/located at "/mytemp", the command line could look like this:
scp InvOut.scn root@RHEL4-32:/mytemp
If you aren't in the directory of the files you want to copy/move, you need to specify paths. So for instance:
scp /opt/landesk/OutputFiles/InvOut.scn root@RHEL6-64:/MyOutputCollection/SomeDirectory
SCP will prompt you to accept a security-certificate (necessary) as well as for the password of the user that you're utilising to log on to the remote box.
NOTE:
If you do not specify a path, i.e. - have a command-line such as:
scp InvOut.scn root@RHEL4-32:
then this will copy the file(-s) into the users' home/root-directory
VIII.B - Filtering output with GREP
"grep" is one of the single most useful (and ultimately - powerful) commands in *-ix. It's usually used as part of a "pipe" command-line to filter the output of something else (text-file, command-output) into more useful (and specific) parameters.
The basic use of grep is very simple.
A practical example of using grep to filter down on output can be found just below, as we reduce the output of a process-listing into something we care for.
The most common way of calling "grep" is as part of a pipe-d command-line like so:
{COMMAND / display of a text-file} | grep "STRING_I_AM_LOOKING_FOR"
So if we wanted to check if a String "Device Name" exists in the text-file "MyInvOutput.scn", the basic command line with grep would look like so, for example:
cat MyInvOutput.scn | grep "Device Name"
Like nearly every other command, GREP has a lot of additional usage options. Use the "man"-pages for more information on just what you can do with GREP.
VIII.C - Getting a list of running processes
Sometimes you need to see what processes are running on a *-ix server. To this end, "ps" will usually serve you well. It comes into its own when combined with grep - making the mass of data actually manageable.
For a "basic" list of all processes that run, just enter:
ps -ef
Most of the time, however, you will desire to filter this output with "grep" so as to manage the output better. This is done like so:
ps -ef | grep "(FULL_OR_PARTIAL_STRING_OF_THE_PROCESS_NAME)"
So a "real" example would look like this (we're searching for all processes that include "scraper", such as the "map-scraper" process):
ps -ef | grep "scraper"
NOTE:
Be aware that you will inevitably find a process of your own grep-search in the list (since your GREP-command line includes the string you're looking for).
VIII.D - TAIL / how to track log files
In order to see log-files in real-time, the use of "tail" is useful - it allows you to see in realtime what a specific LANDes-process is doing (assuming you enabled the verbosity options) as it happens.
The basic command for constantly checking a log/text-file (and displaying any updates as they are written to it) is as follows:
tail -f PATH/FILENAME
So, if we were to wish to track the "vulscan.log"-file on a 64-bit LANDesk agent, we could do this with the following command:
tail -f /opt/landesk/logs/vulscan.log
Please look at section VII.D - DIRECT LINK - for detailed information on which log-files are located where, and what purpose / information they contain.
VIII.E - Observing directories for changes with WATCH
Sometimes you want to monitor a directory (for instance) for either file deletions or creations (such as when a certain process starts writing to a nwe file). This is easily managed with this command.
By combining the command we wish to use, along with "watch", we can do a lot.
So - for instance - let us watch the current directory for any changes in new/deleted files:
watch -d ls-l
The first half of the command line is specific to the "watch"-command, whilst the "ls -l" part is what we want the process to be monitoring.
VIII.F - Shutting your OS down
VIII.F.1 - Shutting down most *-ix OS's:
Just run this command:
shutdown -h now
The command-line parameters break down as follows:
-h => HALT the system (as opposed to reboot).
now => Do it now, with 0 seconds delay/warning. If you want to give warning (on a live server), check "man shutdown" for what parameter(s) you should use.
This will work on pretty much every version of Red Hat, CentOS and SLES that LANDesk supports.
VIII.F.2 - Shutting down Solaris
Solaris requires a different command-line. Here's what you need:
shutdown -y -i 5 -g 10
The command-line parameters break down as follows:
-y == Confirm the prompt of the "are you sure"-type with "yes" automatically.
-i 5 => Go to Init State 5 (i.e. - power off).
-g 10 => give 10 seconds grace/warning
VIII.G - Your *-ix and DNS / the HOSTS-file
Depending on your DNS configuration, you may or may not have hostnames resolved on your *-ix OS's.
One easy way to circumvent this (again, purely for a lab-environment - this is not a solution for a live environment) is to add entries into the HOSTS-file on your *-ix OS.
This is exactly the same concept as the "HOSTS"-file that resides in Windows under "C:\Windows\System32\Drivers\Etc".
In *-ix, this file is:
/etc/hosts
This is true for all version of Linux-flavours, as well as Solaris that LANDesk supports. You just need to edit that file, and you have your DNS-entry for your Core server and/or other *-ix devices you may want to communicate with, rather than having to use IP's all over the place.
VIII.H - Editors in your *-ix OS:
Different *-ix distributions tend to have different editors available in their installs. Generally one of the following three will be available (besides "vi", which can appear a bit intimidating towards a more casual *-ix user).
- "gedit" (for RedHat and CentOS distros)
- "emacs" (for Solaris especially)
- "kate" (for SLES 9, as it doesn't have GEDIT or EMACS by default)
VIII.I - *-ix, carriage returns and potential Windows issues
This is really more a Windows problem, but for the sake of completeness I'll mention it here.
Windows OS's can have a sometimes odd effect on non-Windows created text-files. The details vary greatly from version to version (i.e. Windows 2003 versus Windows Server 2008 R2), but the key point here is that you *CAN* run into problems.
Sometimes, when a file refuses to be processed, it could be because Windows is unable to deal with its encoding - the resulting effects of which can vary from "mild" (files do processe, but just display "odd" in NOTEPAD) to annoying (files do not process and/or cause other problems).
In such cases, it might be worth giving a "unix2dos" type command a try. This command (and it's relevant OS-specific siblings) go through text-files and reformat them in a more Windows-friendly way (replacing Linux-specific carriage returns with carriage returns that Windows can interpret better) for instance. This tends to minimise any potential impact of such issues.
Here are some relatively easy-to-get-ahold-of tools for this task (included on the OS CD's usually):
- For most Linux flavours and Solaris, use "unix2dos" in general.
- For HP-UX, use "ux2dos" in general.
Depending on the exact distribution and release version used, this may or may not be installed by default.
NOTE:
Since the problem relates to "non-Windows" files, YES, this *MAY* arise as an issue for MAC-devices as well. Be aware.
VIII.J - How to find your key binaries with WHICH
WHICH goes through all configured PATH-s, and returns the first hit for the file you're looking for. Primarily this is useful for finding an executable you're trying to locate.
So, for example, running:
which unix2dos
will return:
/usr/bin/unix2dos
on Solaris 10 (as well as a default install of RHEL 5, as it happens).
NOTE:
Be aware that WHICH only returns the first "hit" it finds. If you have multiple binaries, it will only return the one (whichever it runs into first). Generally, WHICH searches PATH-ed directories in the order in which they're listed.
It's a very nifty (and quick) way of locating certain binaries, without having to use "find" (paired with "grep").
IX - Final notes and words of advice
IX.A - Recursive vulnerability scans
One of the most easily overlooked differences between the *-ix platforms and "Windows-world" is related to Patch Manager. Specifically, there are various vulnerabilities for a variety of *-ix platforms which REQUIRE a FULL, RECURSIVE HDD-scan.
This can not only have a massive impact, but can also cause your vulnerability scans to take a VERY long time (15+ minutes is not unusual), depending on how much file/directory-structure there is to be scanned/checked.
LANDesk makes these vulnerabilities stand out in patch content, by having the keyword "Recursive" be included in the ID of the relevant vulnerability (thus, it's very easily searched for). If you are "just playing around" or just testing this or that, feel free to single out these vulnerabilities and put them into the "DO NOT SCAN"-section.
An example of such a scan is the "Security Threat"-type vulnerability "REDHAT-Files-008_Recursive_Scan". That "_Recursive_Scan" addition to the identifier of the vulnerability is meant to help identify this vulnerability as being one of potentially VERY high impact on a client.
WARNING:
These vulnerabilities should be used/enabled only will full awareness of just what impact they can have. Their potential impact on a server is not to be taken lightly.
At the time of the writing of this article (November 2012), there are 15 such vulnerabilities that perform recursive scans - 3 for HPUX, 4 for REDHAT, 8 for SLES.
IX.B - It is what it is - just a survival guide
The install methods described above are not meant to be the primary way in which LANDesk is deployed across your estate. It's a "quick & dirty" set of instructions on how to get clients installed, so you can actually do something with them. There are documents and BKM's on HTTP://COMMUNITY.LANDESK.COM which advise on proper deployment across an estate.
At no point do I make the claim that this is the prettiest or best way to get things done - I'm more than open to suggestions and improvements. All that I claim with this article is to provide information how to get the LANDesk agentry going on the various *-ix platforms.
That's it.