FreeCalypso > hg > fc-sim-tools
comparison doc/Simtool-command-shell @ 18:da6e9d0b2ee6
data, doc, scripts: import from previous fc-pcsc-tools repo
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 14 Mar 2021 07:57:09 +0000 |
| parents | |
| children | d73fddc64485 |
comparison
equal
deleted
inserted
replaced
| 17:372ecc4aa2c4 | 18:da6e9d0b2ee6 |
|---|---|
| 1 Our fc-simtool and fc-uicc-tool operate as interactive shells. When you run | |
| 2 either program, it selects the "card reader" device it will use and connects to | |
| 3 the card via pcsc-lite facilities, and then it gives you an interactive command | |
| 4 shell. The communication session with the card (including vital volatile state | |
| 5 like PIN authentication and currently selected directory and EF) remains | |
| 6 unbroken until you exit the shell, at which point our tools tell pcsc-lite to | |
| 7 power down the card. | |
| 8 | |
| 9 The actual useful commands available in fc-simtool and fc-uicc-tool are | |
| 10 described in other documents; this document describes program invokation and | |
| 11 the command shell itself. | |
| 12 | |
| 13 Program invokation | |
| 14 ================== | |
| 15 | |
| 16 Both tools share the same command line structure: | |
| 17 | |
| 18 fc-simtool [-p num] [batch-command] | |
| 19 fc-uicc-tool [-p num] [batch-command] | |
| 20 | |
| 21 If you run either tool without any options or arguments, it will select the | |
| 22 first reader supported by pcsc-lite (reader number 0, same as if -p0 was | |
| 23 specified), and if the card connection is successful, it will enter the | |
| 24 interactive command shell. Use the -p num option to select a different reader | |
| 25 number; to tell which reader number is which, use fc-pcsc-list to list all | |
| 26 available readers. | |
| 27 | |
| 28 Aside from the -p num option, any arguments given on the command line suppress | |
| 29 the default interactive shell and select the tool's batch mode instead - the | |
| 30 arguments specify the command to be executed. For example, the following | |
| 31 invokation will read and display the inserted card's ICCID, and immediately | |
| 32 exit: | |
| 33 | |
| 34 fc-simtool iccid | |
| 35 | |
| 36 This batch mode is particularly useful with the exec command described further | |
| 37 in this document. | |
| 38 | |
| 39 Command shell basic features | |
| 40 ============================ | |
| 41 | |
| 42 The interactive command shell prompt is "simtool> " in fc-simtool and "uicc> " | |
| 43 in fc-uicc-tool. In this interactive command shell mode commands are entered | |
| 44 naturally, with white space separating the command keyword and any arguments. | |
| 45 Arguments containing spaces need to be enclosed in double-quotes as in | |
| 46 "quoted string"; our tools have two main instances where such complex arguments | |
| 47 are used: | |
| 48 | |
| 49 * Many of our commands, particularly low-level ones, take hexadecimal byte | |
| 50 strings as arguments. In such hex byte strings each byte must be given as | |
| 51 exactly two hex digits (no 0x and no single-digit bytes for small values), | |
| 52 but spaces between bytes for human readability are optional. If these | |
| 53 optional spaces are included, the whole argument needs to be included in | |
| 54 double-quotes. | |
| 55 | |
| 56 * Some of our commands take arguments that represent GSM 03.38 text strings, | |
| 57 using our ASCII representation format for such strings that is defined in the | |
| 58 SIM-data-formats document in the freecalypso-docs repository. If these | |
| 59 arguments contain spaces, they need to be enclosed in double-quotes, and any | |
| 60 embedded '"' characters need to be entered as \". | |
| 61 | |
| 62 Output redirection | |
| 63 ================== | |
| 64 | |
| 65 Most of our information retrieval and dumping commands support output | |
| 66 redirection at the tool-internal command shell level. For example, the | |
| 67 following command will list the SIM Service Table (SST) on the terminal and | |
| 68 redisplay the "simtool> " prompt: | |
| 69 | |
| 70 simtool> sst | |
| 71 | |
| 72 The following form of the same command will write the output to the named file | |
| 73 and not send anything to the terminal: | |
| 74 | |
| 75 simtool> sst > sst-list-file | |
| 76 | |
| 77 If you try the '>' output redirection construct on a command that does not | |
| 78 support it, you will get an error message. | |
| 79 | |
| 80 Working with the local host file system | |
| 81 ======================================= | |
| 82 | |
| 83 Because our tools provide a lot of commands for saving SIM data into host files | |
| 84 (the above output redirection mechanism and some binary file writes) as well as | |
| 85 reading data and command scripts from host files, having a sensible interaction | |
| 86 with the local host file system is important. Users should have a convenient | |
| 87 way to see what directory they are in, change their current directory, and | |
| 88 invoke other local host commands like mkdir from inside their fc-simtool session | |
| 89 - hence the following features are provided: | |
| 90 | |
| 91 * Any command beginning with '!' is passed to the system shell /bin/sh - the | |
| 92 primary use of this feature is to be able to run !pwd to see what directory | |
| 93 you are in, and more rarely do other things like !mkdir mysimdata. | |
| 94 | |
| 95 * The built-in cd command changes the current directory of the running | |
| 96 fc-simtool process - because of the way UNIX works, cd is one command that | |
| 97 cannot be usefully executed via the '!' shell invokation mechanism. | |
| 98 | |
| 99 Command script facility | |
| 100 ======================= | |
| 101 | |
| 102 Both fc-simtool and fc-uicc-tool implement an exec command: | |
| 103 | |
| 104 exec script-file | |
| 105 | |
| 106 This command opens the named file, reads it line by line, and executes each | |
| 107 read line as a command. Whitespace-only lines are skipped, and any lines | |
| 108 beginning with '#' are treated as comments. exec scripts can be nested. If | |
| 109 the execution of any command encounters an error, all nested scripts are | |
| 110 stopped: we implement the "stop on first error" policy. | |
| 111 | |
| 112 If the given script file name contains any slashes, it is used as-is. If there | |
| 113 are no slashes in the requested script file name, the file is sought first in | |
| 114 the script installation directory /opt/freecalypso/sim-scripts, and if it is | |
| 115 not found there, then in the current directory. | |
| 116 | |
| 117 Data file sourcing | |
| 118 ================== | |
| 119 | |
| 120 All fc-simtool and fc-uicc-tool commands that read from ASCII-based data files | |
| 121 named as arguments implement the same search logic as the exec command. This | |
| 122 design allows complex SIM programming scripts to be installed in | |
| 123 /opt/freecalypso/sim-scripts along with their data files, ready to be invoked | |
| 124 as needed. |
