VS Code al posto di RDi: Code for IBM i dal primo giorno

Accedi per salvare

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

  1. VS Code, da Microsoft.
  2. Dalle estensioni: Code for IBM i (HalcyonTechLtd.code-for-ibmi) e, consigliato, il pacchetto IBM i Development Pack, che raccoglie le estensioni costruite sopra.
  3. 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

← Torna al blog

Commenti

Nessun commento ancora. Sii il primo a commentare!

Devi avere un account per commentare. Accedi · Registrati