iprintmig - Migration utility for iPrint
This section contains iPrint commands and utilities used on the Linux platform.
iprintmig -s <server> -u <user> <options> -n <printer1>...<printerN>
iprintmig -s <options>
iprintmig is a management tool used to migrate printers to OES 23.4.
Prints this summary.
Specify the level of detail to display about the execution of operations with -v displaying minimum information and -vvvv displaying maximum information.
Prints version information.
Specifies the source server hostname or address to migrate from.
Specifies the target server hostname or address to migrate to.
Specifies the destination print manager DN to migrate to.
Specifies the FDN format admin for the source server, such as cn=admin, 0=example.
Specifies the FDN format admin for the target server, such as cn=admin, 0=example.
Password of the source server admin user.
File descriptor number (to read the source admin password).
Password of the user on the target server.
File descriptor number (to read the destination admin password).
Target iPrint Driver Store (IDS) server hostname or address. Defaults to dst.
Distinguished name of the target IDS.
Server hostname or address of the eDirectory server for the target server to use.
Name of the printer to migrate. Can be specified multiple times.
File containing names of printers (1 per line) to migrate.
File descriptor number listing names of printers to migrate.
Migrates all printers from the source.
DN of the container to create print objects in (conflicts with -S).
Creates objects on the target server with the same DN as the source server. Only valid when migrating to a new tree.
Creates a manager on the target server with the same hostname as the source manager. Useful when migrating the entire print server.
Saves the XML migration processing file to <file>.
Root password of the remote driver store server.
File descriptor number (to read the root password of the remote driver store server).
Root password of the source server.
File descriptor number (to read the root password of the source server).
Indicates the version of the operating system on the source server.
Do not migrate drivers. If drivers are not present in the destination IDS, clients cannot install printers.
If the destination IDS has a driver with the same name as a corresponding driver on the source server, overwrite it.
Stops migration of Access Control Lists (ACLs).
Stops migration of profiles. If profiles are not present on the target server, clients cannot install printers.
Overwrites the target server profile for a driver with the same name as a profile on the source server.
Prepares but does not perform migration. This option creates an output XML file and migrates drivers (unless --nodrivers was specified) but does not perform migration.
Prints debug messages to a /var/opt/novell/log/migration/iprintmig.log file.
Synchronizes any changes in the source server data with the target server after the migration process is complete. This option must be used in conjunction with the -a option.
Lets you resume the migration process from where it was suspended.
Validates the parameters passed for the migration process and returns the status without actually starting the migration.
Aggregates services on a single target server from multiple source servers.
Enables secure authentication.
Indicates the LDAP port.
Creates the contexts of the source printers under a different context on the target server. The context of the target printer is specified by using the -c<DN>, --dst-container <DN> option.
Migrates printers from the source server to the target server without changing their identities.
Identifies the names of the platforms to migrate. All the drivers for the selected platforms are migrated. The driver platforms should be specified every time you configure the print options. For example, --driver-platform "Windows XP" --driver-platform "Vista 64".
For security reasons, it is safest to transmit passwords to the script via an environment variable or via the -P/-T options, because any user of the system can view the password if it is on the command line (-p/-t options).
Instead, have the calling program set its environment with the following two variables:
IPRINTMIG_SRC_PASSWORD=examplePassword1
IPRINTMIG_DST_PASSWORD=examplePassword2
Then you can execute the following command, which migrates all the printers from server1.example.com to the server where the script is being run.
iprintmig -s server1.example.com -u admin.example.us -U admin -a -x psminfo.xml -I cn=ids,o=example,c=us \-i ids.example.com -c ou=iPrint,o=example,c=us
The following example migrates several printers at a time while explicitly specifying the hostname of the new print manager:
iprintmig -s server1.example.com -d newserver.example.com -u admin.example.us -U admin -x psminfo.xml \ -I cn=ids,o=example,c=us -i ids.example.com -c ou=iPrint,o=example,c=us -n printer1 -n printer2 \-n printer3 -n printer4
If a calling program specifies a large number of printers, there are three ways to proceed:
The -n (or --printer-name) option can be specified with a printer name one or more times, as in the example above. This can create a very long command line if many printers are being migrated, so this usage is discouraged.
A file containing printer names, one per line, can be specified by using the -f (or --printers-file) option. For a calling program to use this file, the program must first write the list of printers to a temporary file.
The calling program can avoid the use of a temporary file by using the -F (or --printers-fd) option, which allows the calling program to send the list of printer names over a pipe, such as a pipe created with socketpair(). When you use the -f (or --printers-file) option, printer names are read from the file descriptor, one per line.
A simple example of this usage follows in C. Similar methods are available with the Mono.Posix.Syscall members.
char *printers[] = { "p1", "p2", "p3" }; int fds[2], pid, rc; rc = socketpair(AF_UNIX, SOCK_STREAM, 0, fds); if (rc < 1) { perror("Error creating socket pair"); exit(1); } pid = fork(); switch (pid) { case -1: //Error perror("Fork failed"); exit(1); case 0: //Parent close(fds[1]); for (int i; i < (sizeof(printers)/sizeof(char**)); ++i) { write(fds[0], printers[i], strlen(printers[i])); write(fds[0], "\n", 1); } close(fds[0]); break; default: //Child close(fds[0]); //Set an environment that contains the password env vars //Make sure that close on exec isn't set for fds[1] //exec the iprintmig script with "-F" and fds[1] converted from an int to a string as arguments }
Most of the information that this program requires can be obtained from the eDirectory objects that you select. For example, to migrate all printers from a NetWare server to the new Linux server, you need to select the old PSM object, which contains the address of the server it is running on. Then you need to select the destination PSM, which has attributes for its network address, the eDirectory server it is using, and the IDS it is using. The corresponding IDS object has its own address.
There are some details that you must manually provide instead of selecting or discovering, such as details about credentials and whether or not to migrate profiles or drivers.
You can select a destination container to hold the objects created during migration, or you can choose to keep the same path for objects. This only works for a move from one tree to another, because NetWare objects already exist in the source tree and might conflict with the new Linux versions of the objects.
Open Text, Inc.
Copyright 2023 Open Text Software, Inc. All Rights Reserved.
iprintman