Code for IBM i è l'estensione di VS Code che apre i membri sorgente, compila e mostra gli
errori sulla riga. Si collega al sistema via SSH, e sul sistema non installa niente: servono
il server SSH attivo, un profilo con la password e, per far funzionare tutto, la shell bash.
La documentazione dell'estensione dichiara supportato IBM i 7.4 e successivi; il 7.3 può
funzionare, ma non è supportato.
Che cosa cambia rispetto a SEU e RDi lo racconta il capitolo Gli strumenti con cui si lavora oggi. Qui c'è come si comincia.
Sul sistema: il lavoro dell'amministratore
Il server SSH
Il server SSH è nel programma su licenza 5733-SC1 (OpenSSH, OpenSSL, zlib). Si avvia con:
STRTCPSVR SERVER(*SSHD)
Il profilo QSSHD deve essere abilitato. Per farlo ripartire a ogni avvio di TCP/IP, IBM indica
tre strade equivalenti; la più diretta è in IBM Navigator for i: Rete > Configurazione TCP/IP >
Proprietà > Server da avviare, e si spunta SSHD.
La shell
Quando un utente entra via SSH, OpenSSH avvia la shell scritta nel suo profilo; se non ce n'è
nessuna, usa /QOpenSys/usr/bin/bsh. Con bsh diverse funzioni dell'estensione non vanno, e la
documentazione chiede bash, che arriva con gli strumenti open source di IBM i
(/QOpenSys/pkgs/bin/bash). La si imposta con una procedura SQL:
-- per il proprio profilo
CALL QSYS2.SET_PASE_SHELL_INFO('*CURRENT', '/QOpenSys/pkgs/bin/bash');
-- per tutti i profili che non ne hanno una (serve *SECADM)
CALL QSYS2.SET_PASE_SHELL_INFO('*DEFAULT', '/QOpenSys/pkgs/bin/bash');
*DEFAULT non vale per i profili forniti da IBM. Se bash non è installata, which bash da
una sessione SSH non risponde niente, e va installata prima.
Il CCSID
Un profilo con CCSID 65535, cioè «nessuna conversione», rende i nomi di oggetti e membri
illeggibili nell'estensione. Il profilo deve avere il CCSID della sua lingua, scritto nel profilo
o preso dal valore di sistema QCCSID con CCSID(*SYSVAL).
Sul PC
- VS Code, da Microsoft.
- Dalle estensioni: Code for IBM i (
HalcyonTechLtd.code-for-ibmi) e, consigliato, il pacchetto IBM i Development Pack, che raccoglie le estensioni costruite sopra. - Nell'icona di IBM i a sinistra: Connect to an IBM i. Si danno indirizzo, porta, profilo, e la password oppure una chiave privata. Se sul sistema c'è la MFA, si spunta l'opzione apposita e il codice TOTP viene chiesto a ogni collegamento.
Alla prima connessione l'estensione controlla la shell e, se non è bash, propone di cambiarla.
Un esempio: collegarsi a PUB400
Sull'IBM i pubblico e gratuito, l'SSH risponde sulla porta 2222 e non sulla 22. La connessione si scrive così:
| Campo | Valore |
|---|---|
| Host | pub400.com |
| Port | 2222 |
| Username | il proprio profilo |
| Password | quella del profilo |
Poi, nella vista User Library List, si aggiunge una delle due librerie ricevute; nel browser
degli oggetti si crea un filtro su quella libreria, si apre il membro e si compila con
Ctrl+E (Cmd+E su Mac). Con OPTION(*EVENTF) gli errori compaiono nella scheda Problems,
sulla riga che li ha prodotti.
I problemi del primo giorno
| Che cosa si vede | Perché | Che cosa fare |
|---|---|---|
| Un'azione risponde is not an identifier | la shell non è bash |
scollegarsi e scegliere Connect and Reload Server Settings |
| Error in shell configuration | il .bashrc scrive qualcosa (echo, liblist) |
spostare quelle righe in ~/.profile |
| L'SQL non restituisce niente | il server SSH non è partito bene | ENDTCPSVR SERVER(*SSHD) e poi STRTCPSVR SERVER(*SSHD) |
| La chiave privata non funziona mai (DECODE_ERROR) | il formato della chiave | convertirne una copia in PEM con ssh-keygen -p -f chiave -m PEM |
| Nomi di membri con caratteri strani | CCSID 65535 sul profilo | il CCSID della lingua |
Le chiavi SSH e la MFA non bastano a mettere al sicuro il sistema. Un profilo che entra via SSH ha gli stessi diritti che ha in 5250, su tutti gli oggetti che raggiunge. Chi abilita SSH per gli sviluppatori dovrebbe sapere quali profili lo usano, e il giornale di audit serve a questo, come spiega Accendere il giornale di audit e leggerlo con SQL.
Su quali versioni funziona
Code for IBM i dichiara supportato IBM i 7.4 e successivi. SET_PASE_SHELL_INFO c'è nella
documentazione IBM dal 7.3. Il server SSH è nel programma su licenza 5733-SC1.
Fonti
- Start TCP/IP Server (STRTCPSVR) — IBM Documentation 7.5,
*SSHD - How to setup the IBM i SSH daemon to autostart with TCP/IP — IBM Support
- SET_PASE_SHELL_INFO procedure — IBM Documentation 7.5
- OpenSSH, OpenSSL, zlib (5733-SC1) — IBM Documentation 7.5
Commenti
Nessun commento ancora. Sii il primo a commentare!
Devi avere un account per commentare. Accedi · Registrati