DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦d9e3fcf9e⟧ TextFile

    Length: 19007 (0x4a3f)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦4549aa9ee⟧ 
            └─⟦this⟧ 

TextFile

System Console Command Interpreter

Introduction

    The console command interpreter (CI) is a user interfce for
    the R1000 system console.  It allows an operator to run
    environment programs, such as Backup and Archive, from the
    system console, eliminating the need to maintain both an
    Environment console and the system console in an operations
    center.  The other functions of the system console (EEDB and
    Kernel) are not changed.  

    The purpose of the CI is to allow the system operator to
    perform common system maintenance functions at the console.
    It is not intended for software development.  

Overview

    To use the CI you must first get the proper prompt on the
    system console.  To do this, [CONTROL][Z] is used to cycle the
    various prompts on the system console (EEDB and Kernel are 2
    of the most common).  If you haven't logged into the CI yet, the
    following should appear which indicates you are talking to
    the CI :

            ====> job XXX <====
            username:

    where XXX is a number identifying the CI job, which will vary.
    From here you log into the Environment supplying a username,
    password, and optionally a session name.@foot(If a session name
    is not provided, then it will default to S_1.)

            ====> job XXX <====
            username: operator
            password: 
            session: baily

    The password will not be echoed to increase security.  At this
    point the CI will output some messages and the command line
    prompt will appear :

            ====> job XXX <====
            command:

    At this point you can type in any Environment command and the
    CI will execute it.  For example :

            ====> job XXX <====
            command: what.time

            ====> job NNN <====
            July 4, 1987 at 10:23:21 PM

            ====> job XXX <====
            command:

    Notice that the banner lines have different job numbers.  This
    is due to the Environment running each command as a separate
    job with its own input and output stream.

    When finished, enter the "QUIT" command to logoff.

            ====> job XXX <====
            command: quit

    The CI will again write some messages to the console, and once
    again prompt you for a username.

    If you don't respond to the "command:" prompt within a certain
    amount of time@foot(This is configurable when the CI program
    is run, and is generally set to 60 seconds.) the CI will quit
    automatically, effectively logging you off.  

    The CI can execute user-written programs in the same way as
    Environment commands.  Just enter a call to the program, with
    the appropriate arguments.

Editing Functions

    Input to the CI can be edited using the following keys :

    [DELETE]     - Erase a character to the left.
    [CONTROL][H]

    [CONTROL][U] - Erase the current line.

    [CONTROL][A] - Replace current line with previously executed
    [CONTROL][B]   line.

Commands

Introduction

    The routines located in !Tools.CI.<revn>_spec.Units.Commands are
    designed to provide a clean and simple interface for some of
    the most commonly used system management commands of the
    Rational Environment.  Specifically, these commands are
    intended to be used by operations personnel via the system
    console Environment interface.  This line oriented command
    interface allows execution of Environment commands without
    requiring knowledge of the Environment's window based
    interface.  

    By logging in via the system console, the user is presented
    with a command line intrepreter simular to the majority of
    other systems on the market today.  Commands are entered on a
    single line, with the <RETURN> key causing execution of the
    command entered.  

Customization

    The routines contained in !Users.Operator.Commands should
    follow a simplistic interface doctrine, requiring minimal to
    no parameters, with defaults supplied when possible.  

    The standard base routines are procedures, generally doing no
    more than calling the Environment package which performs the
    desired operation.  The idea is to help an operator who
    generally has no knowledge of Ada and no training in the basic
    workings of the Rational Environment.  Since most operations
    personnel are familar with line oriented command interfaces,
    the routines are designed to provide this.  

Supplied Commands

Backup
======

Execute.Full_Backup;

    Performs a Full system backup.

    Example:

        command: Execute.Full_Backup;

        ====>> job 211 <<====
        87/03/18 11:23:40 --- The backup tape's Volid is AGLKRZ.
        A mount request has been issued and is awaiting the operator.
            .
            .
            .
            
Execute.Primary_Backup;

    Performs a Primary system backup.  Primaries save all changed
    state since the last Full backup.

    Example:

        command: Execute.Primary_Backup;
        
        ====>> job 211 <<====
        87/03/18 11:23:40 --- The backup tape's Volid is AGLKRZ.
        A mount request has been issued and is awaiting the operator.
            .
            .
            .

Execute.Secondary_Backup;

    Performs a Secondary system backup.  Secondaries save all
    changed state since the last Primary backup.

    Example:

        command: Execute.Secondary_Backup;

        ====>> job 211 <<====
        87/03/18 11:23:40 --- The backup tape's Volid is AGLKRZ.
        A mount request has been issued and is awaiting the operator.
            .
            .
            .
    
Show.Backups;

    Displays information about the last 10 backups, showing the
    Date and time it was performed, the kind (Full, Primary,
    Secondary) and the volume ID of the tape set.

    Example:

        command: Show.Backups;

        ====>> job 212 <<====
        Incremental Backup 9 Taken At 17-MAR-87 09:40:10 Based On ....
          Blue Tape Vol Name => BACKUP BLUE TAPE, 17-MAR-87 09:40:10 3
          Blue Tape Vol Id   => 002205
          Data Tape Vol Name => BACKUP, 17-MAR-87 09:40:10
          Data Tape Vol Id   => AGKKOF
        Full Backup 8 Taken At 14-MAR-87 15:13:12
          Blue Tape Vol Name => BACKUP BLUE TAPE, 14-MAR-87 15:13:12 3
          Blue Tape Vol Id   => 007603
          Data Tape Vol Name => BACKUP, 14-MAR-87 15:13:12
          Data Tape Vol Id   => AFRXFU
           .
           .
           .
   
Archive
=======

Execute.Save (Object : String);

    Performs an Archive.Save of the object(s) specified.

    Example:

        command: Execute.Save("!Users.SMP");
    
        87/03/18 11:12:43 --- [Archive.Save rev 361, objects => "!Users.SMP",
        87/03/18 11:12:43 ...  options => "R1000", device => "MACHINE.DEVICES.TAPE_0",
        87/03/18 11:12:43 ...  response => "<PROFILE>"].
            .
            .
            .

Execute.Restore;

    Performs an Archive.Restore operation, restoring only those
    objects that have changed, and setting the access control list
    for the object to that saved with the Save routine.

    Example:

        command: Execute.Restore;

        87/03/18 11:28:43 --- [Archive.Restore rev 361, objects => "??", use_prefix 
        87/03/18 11:28:43 ... => "*", for_prefix => "*", options => "R1000 
        87/03/18 11:28:43 ... changed_objects replace object_acl..
        87/03/18 11:28:43 ... default_acl=archived", device => "MACHINE.DEVICES.
        87/03/18 11:28:43 ... TAPE_0", response => "<PROFILE>"].
            .
            .
            .

Printer Queue
=============

Execute.Disable_Queue  (Device : String);

    Disables the print queue for the specified device.  Device is
    the logical device which can be determined using the
    Show.Queues command.  

    Example:

        command: Execute.Disable_Queue("Terminal_31");

Execute.Enable_Queue   (Device : String := "all");

    Enable the print queue for the specified device.  Device is
    the logical device which can be determined using the
    Show.Queues command.

    Example:

        command: Execute.Enable_Queue("Terminal_31");

        command: Execute.Enable_Queue;      -- Enables all known queues
    
Execute.Cancel_Request (Id : Natural);

    Cancels a print request.  The Id of the print request can be
    determined using the Show.Requests command.

    Example:

        command: Execute.Cancel_Request(12);
    
Show.Queues    (Class : String := "all");

    Displays a print queue, giving its state and the logical
    device it is assigned to.  The default "all" specifies to show
    all regiestered classes of print queues.

    Example:

        command: Show.Queues;           -- Displays all known queues

        ====>> job 231 <<====
          Device     Protocol   State    Classes
        ===========  ========  ========  =======
        TERMINAL_32  XON_XOFF  Disabled   LASER
        TERMINAL_47  XON_XOFF  Disabled   LP

        command: Show.Queues("LP");

        ====>> job 211 <<====    
          Device     Protocol   State    Classes
        ===========  ========  ========  =======
        TERMINAL_47  XON_XOFF  Disabled    LP


Show.Requests  (Class : String := "all");

    Displays all outstanding requests for a given class of print
    queues.  the defautl "all" specifies to show all requests on
    all registered classes of print queues.

    Example:

        command: Show.Requests;

        ====>> job 211 <<====
        ID  Time   State   Class  User             Object
        ==  =====  ======  =====  ====  ===============================
        3   12:04  Queued  LASER  SMP   !COMMANDS.SHOW'V(2)
        1   11:38  Queued  LP     SMP   !USERS.SMP.COMMANDS.EXECUTE'V(2)
        2   11:39  Queued  LP     SMP   !USERS.SMP.SHOW'V(2)

        command: Show.Requests("LP");

        ====>> job 211 <<====
        ID  Time   State   Class  User             Object
        ==  =====  ======  =====  ====  ===============================
        1   11:38  Queued   LP    SMP   !EXECUTE'V(2)
        2   11:39  Queued   LP    SMP   !OPERATOR_COMMANDS.SHOW'V(2)


Shutdown
========

Execute.Schedule_Shutdown (At_Time : String := "23:59");

    Schedules a system shutdown to be done at the given time.  Any
    valid date/time value can be supplied.  Date should be of the
    form YR/MO/DA, followed by military time of the form
    HR:MIN:SEC.  The date is optional, in which case the current
    date is used.  A time value which is less than the current
    time (ie a past time) will cause the system to shutdown
    immediately.

    Example:

        command: Execute.Schedule_Shutdown;

        command: Execute.Schedule_Shutdown("10:34 pm");

        command: Execute.Schedule_Shutdown("87/09/12 12:00");

        Shutdown Interval is 11:51:00; Archive_Enabled = FALSE
        Why do you want to stop the machine?
        Terminate input with Enter.  ? for help.
            .
            .
            .

Execute.Cancel_Shutdown;

    Cancel a previously scheduled shutdown.

    Example:

        command: Execute.Cancel_Shutdown;
    
        ====>> job 213 <<====
        87/03/18 12:06:57 --- Shutdown has been canceled.
        

Show.Shutdown;

    Displays the next scheduled shutdown time.

    Example:

        command: Show.Shutdown;                               
        
        ====>> job 233 <<====
        Shutdown Interval is 11:51:00; Archive_Enabled = FALSE
        
Terminal Related
================

Execute.Force_Logoff (Line : Terminal.Port);

    Causes the user logged onto the specified line to be logged
    off.  All uncommitted images are saved.

    Example:

        command: Execute.Force_Logoff(32);
    
Execute.Enable_Login (Line : Terminal.Port); 

    Enables the specified line for login.

    Example:

        command: Execute.Enable_Login(32);
    
Execute.Disable_Login (Line : Terminal.Port);

    Disables the specified line for login.  If a user is currently
    logged in and using the line, the line will be disabled only
    after the user has logged off.

    Example:

        command: Execute.Disable_Login(32);

Show.Settings (Line : Terminal.Port := 0);

    Displays information for the specified terminal.

    Example:

        command: Show.Settings(32);

        ====>> job 211 <<====
        Terminal Settings for Port 32
        -----------------------------
        Terminal Type =                  CIT500R
        Input Baud Rate =                BAUD_9600
        Output Baud Rate =               BAUD_9600
        Parity =                         NONE
        Stop_Bits =                       2
        Char_Size =                      CHAR_8
        Flow Control for Transmit Data = NONE
        Flow Control for Receive Data =  NONE
        Disconnect_On_Disconnect =       FALSE
        Disconnect_On_Logoff =           FALSE
        Disconnect_On_Failed_Login =     FALSE
        Log_Failed_Logins =              FALSE
        Login_Disabled =                 FALSE
        
Miscellaneous
=============

Execute.Send_Message (M : String; User : String := "<ALL>");

    Sends a message M to the specified user.  If the default user
    <ALL> is used, then the message is sent to all users currently
    logged into the system.

    Examples:

        command: Execute.Send_Message("Testing");

        command: Execute.Send_Message("Hi","SMP");
    
Execute.Set_Time (T : String);

    Sets the system time to the specified time.  The time value T
    is of the form YR/MO/DA HR:MIN:SEC.

    Example:

        command: Execute.Set_Time("87/09/12 15:08:34");
Show.Time;

    Displays the current system time.
    
    Example:
    
        command: Show.Time;
        
        ====>> job 211 <<====
        March 18, 1987 at 12:13:29 PM
        
Execute.Snapshot;

    Performs a system snapshot immediately.

    Example:

        command: Execute.Snapshot;
        

        ====>> job 211 <<====
        87/03/18 12:14:06 +++ Running Snapshot daemon.
        
Show.Users;

    Displays information about the currently logged in users and
    the jobs they are running.

    Example:

        command: Show.Users;
        
        ====>> job 211 <<====
        USER   SESSION  LINE    TIME      I_O_COUNT
        =====  =======  ====  =========  ============
        BLB      S_1     240    5/20:55  3756/148595
        GZC_1    S_1     241  30:44.307  62110/951027
        JLS      S_1     248    1:28:56   1798/67146
        SMP      S_1     247    2:57:49  62150/977550

Show.Daily_Message;

    Displays the Daily Message file.

    Example:

        command: Show.Daily_Message;
        
Show.Disk_Space;

    Displays information for all disk volumes known to the system.

    Example:

        command: Show.Disk_Space;

        ====>> job 211 <<====        
        Volume  Capacity  Available   Used   % Free
        ======  ========  =========  ======  ======
        1        369120     264059   105061    71
        2        391680     263908   127772    67
        3        391680     265421   126259    67
        4        401280     246396   154884    61
                                                 
        total   1553760    1039784   513976    66


Show.Help;

    Displays help information for these commands.

    Example:

        command: Show.Help;
        

Def (New_Context : String := "");

    Changes the current context to the new context.  This command
    is imbedded in the CI.  The CI, like all jobs, has a current
    context.  This is an object (usually a library, but can be a
    file or an Ada object) in whose context names are resolved.
    The initial value is your home library.  Def changes the
    context of the CI itself, not a command job.  This changes the
    context in which subsequent commands are executed.

    If the null string is used, the current context is displayed.

    Example:
    
        command: Def("!");
        
        ====>> job 211 <<====
        87/03/18 12:14:06 ::: [Library.Context ("!", PERSEVERE);].
        87/03/18 12:14:06 +++ Current context is now !
        87/03/18 12:14:06 ::: [End of Library.Context command --- No errors]

Help;

    Displays a small help menu of commands for the CI.

Quit;

    Terminate the session, logging the user off.  After the user
    has been logged off, the CI will again prompt for a username.

Typ (Object : String := "");

    Displays the image of the given object. The name may contain
    wildcards, in which case multiple objects may be displayed.




Installation

    The CI is distributed as an Environment program, located in
    the sybsystem !Tools.CI.  The most recent version (view) of
    this subsystem should always be used.  To get the CI running,
    the following setup must be done to the current release
    library (!Machine.Release.Current) :

        - Current.Activity must include an entry for !Tools.CI
          specifying the most recent spec and load view.  This
          can be done by executing the Activity.Add procedure.

        - Current.Commands should include links to :

                !Tools.CI.<revn>.Units.Commands.@

          These are command programs intended for use by the CI
          users.  This can be done by executing the Links.Add
          procedure.

    To run the CI, you must execute the CI.Login procedure.  This
    is ordinarily done from the Initialize procedure which is
    executed when the system boots, or can be done by the
    following command :

        Program.Run_Job(Program.Current("!Tools.CI", "CI.Login",
                  Activity => "!Machine.Release.Current.Activity"),
              Context => "!Machine.Error_Logs",
              Options => "Output=!Machine.Error_Logs.CI_Output" &
                         ",Error=!Machine.Error_Logs.CI_Error");


Miscellaneous

    Each input line to the CI is treated as an Ada program, so
    multiple environment commands can be entered on a single line,
    separated by semicolons, and will be executed in the sequence
    entered.  In general, any valid ada statement (conditionals,
    loops, etc) can be be used, limited only by the line length
    (256 characters).  The "DEF", "QUIT", and "HELP" commands are
    special exceptions and should only be entered on a line by
    themselves.

    [CONTROL][G] will put the currently executing program into
    background mode and allow further commands to be executed.
    Each program running in background, as with the currently
    executing program, will be identified with a job id in its
    header.  Use of [CONTROL][Z] allows selection of the various
    jobs running.

Restrictions and Limitations

    The CI requires the Delta release of the Rational Environment
    for correct operation.  

    Commands which use Object Editors will not work via the system
    console (for example What.Jobs, Links.Edit).

    Commands which use Window I/O will not work via the system
    console.

    Maximum line length is 256 characters