Client SSH
Executarea comenzilor pe server și transferul de fișiere.
Introducere
Netuno are integrat în framework-ul său low-code un client SSH, care permite conectarea la servere, executarea comenzilor, trimiterea și primirea de fișiere, modificarea dosarelor, printre alte operațiuni la distanță.
Suportă multiple conexiuni simultane, precum și SCP și SFTP.
Acest lucru se datorează implementării Java și open-source
SSHJ, care îi permite Netuno
să ofere aceste funcționalități tuturor limbajelor de script prin resursa _ssh.
Mai multe despre resursa SSH din Netuno.
Configurare
Primul pas este să configurați datele de acces SSH pe care Netuno le va folosi pentru a realiza conexiunea.
Navigați în aplicația pe care o dezvoltați până la fișierul de configurare a mediului. În acest exemplu, vom folosi fișierul de dezvoltare, situat în:
config/_development.json
Verificați dacă există configurări pentru SSH; dacă nu există, atunci la sfârșitul fișierului de configurare (în format JSON) adăugați parametrii de configurare SSH, de exemplu:
{
...
"ssh": {
"default": {
"enabled": true,
"host": "serverul.meu.net",
"port": 22,
"username": "root",
"password": "$eCr37"
}
},
...
}
După salvarea modificărilor, este suficient să reporniți Netuno pentru a prelua modificările de configurare. Acestea sunt
configurările implicite pentru conexiune, după cum indică numele cheii default.
Puteți adăuga mai multe configurări de conexiune SSH cu alte chei în JSON.
Pentru a adăuga mai multe configurări de conexiune SSH, este suficient să repetați blocul de configurare implicit și să înlocuiți cheia
default cu alta la alegerea dumneavoastră, de exemplu:
{
...
"ssh": {
"default": {
"enabled": true,
"host": "serverul.meu.net",
"port": 22,
"username": "root",
"password": "$eCr37"
},
"altul": {
"enabled": true,
"host": "serverul.alt.net",
"port": 22,
"username": "root",
"password": "$eCr37"
}
},
...
}
Configurarea de mai sus permite utilizarea contului default atunci când este codificat în felul următor:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const ssh = _ssh.init()
const ssh = _ssh.init()
ssh = _ssh.init()
ssh = _ssh.init()
val ssh = _ssh.init()
final ssh = _ssh.init()
Pentru a utiliza configurarea altul, este suficient să adăugați cheia configurării ca parametru al funcției
_ssh.init(), în felul următor:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sshAltul = _ssh.init("altul")
const sshAltul = _ssh.init("altul")
sshAltul = _ssh.init("altul")
sshAltul = _ssh.init("altul")
val sshAltul = _ssh.init("altul")
final sshAltul = _ssh.init("altul")
Dacă nu adăugați un nume de configurare ca parametru, va fi utilizată configurarea contului
default.
Conexiune
Înainte de a face orice, este necesar să inițiați conexiunea SSH:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ssh.connect()
ssh.connect()
ssh.connect()
ssh.connect()
ssh.connect()
ssh.connect()
Comenzi
Pentru a executa comenzi, este necesar să inițiați o sesiune de comenzi:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sshSesiune = ssh.initSession()
const sshSesiune = ssh.initSession()
sshSesiune = ssh.initSession()
sshSesiune = ssh.initSession()
val sshSesiune = ssh.initSession()
final sshSesiune = ssh.initSession()
La executarea unei comenzi este furnizat un obiect care conține starea execuției și ieșirea de date (output) aferentă, de exemplu:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sshRezultatComanda = sshSesiune.exec("ls -rato")
if (sshRezultatComanda.ok) {
_out.println("Executat cu succes:")
_out.println(sshRezultatComanda.output())
} else {
_out.println("Comanda a eșuat:")
_out.println(sshRezultatComanda.error())
}
const sshRezultatComanda = sshSesiune.exec("ls -rato")
if (sshRezultatComanda.ok) {
_out.println("Executat cu succes:")
_out.println(sshRezultatComanda.output())
} else {
_out.println("Comanda a eșuat:")
_out.println(sshRezultatComanda.error())
}
sshRezultatComanda = sshSesiune.exec("ls -rato")
if sshRezultatComanda.ok:
_out.println("Executat cu succes:")
_out.println(sshRezultatComanda.output())
else:
_out.println("Comanda a eșuat:")
_out.println(sshRezultatComanda.error())
sshRezultatComanda = sshSesiune.exec("ls -rato")
if sshRezultatComanda.ok
_out.println("Executat cu succes:")
_out.println(sshRezultatComanda.output())
else
_out.println("Comanda a eșuat:")
_out.println(sshRezultatComanda.error())
end
val sshRezultatComanda = sshSesiune.exec("ls -rato")
if (sshRezultatComanda.ok) {
_out.println("Executat cu succes:")
_out.println(sshRezultatComanda.output())
} else {
_out.println("Comanda a eșuat:")
_out.println(sshRezultatComanda.error())
}
final sshRezultatComanda = sshSesiune.exec("ls -rato")
if (sshRezultatComanda.ok) {
_out.println("Executat cu succes:")
_out.println(sshRezultatComanda.output())
} else {
_out.println("Comanda a eșuat:")
_out.println(sshRezultatComanda.error())
}
Obiectul returnat de comandă este SSHExecResult.
Nu uitați să închideți întotdeauna sesiunea:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
sshSesiune.close()
sshSesiune.close()
sshSesiune.close()
sshSesiune.close()
sshSesiune.close()
sshSesiune.close()
SCP
Prin SCP putem trimite și primi fișiere.
Pentru a crea un fișier text dintr-un string și a descărca conținutul fișierului creat, vedeți exemplul:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sshSCP = ssh.initSCP()
// Creează fișierul text.
sshSCP.uploadText("salut.txt", "Salut! Conținutul meu aici...")
// Descarcă și afișează conținutul fișierului.
_out.println(sshSCP.downloadText("salut.txt"))
sshSCP.close()
const sshSCP = ssh.initSCP()
// Creează fișierul text.
sshSCP.uploadText("salut.txt", "Salut! Conținutul meu aici...")
// Descarcă și afișează conținutul fișierului.
_out.println(sshSCP.downloadText("salut.txt"))
sshSCP.close()
sshSCP = ssh.initSCP()
# Creează fișierul text.
sshSCP.uploadText("salut.txt", "Salut! Conținutul meu aici...")
# Descarcă și afișează conținutul fișierului.
_out.println(sshSCP.downloadText("salut.txt"))
sshSCP.close()
sshSCP = ssh.initSCP()
# Creează fișierul text.
sshSCP.uploadText("salut.txt", "Salut! Conținutul meu aici...")
# Descarcă și afișează conținutul fișierului.
_out.println(sshSCP.downloadText("salut.txt"))
sshSCP.close()
val sshSCP = ssh.initSCP()
// Creează fișierul text.
sshSCP.uploadText("salut.txt", "Salut! Conținutul meu aici...")
// Descarcă și afișează conținutul fișierului.
_out.println(sshSCP.downloadText("salut.txt"))
sshSCP.close()
final sshSCP = ssh.initSCP()
// Creează fișierul text.
sshSCP.uploadText("salut.txt", "Salut! Conținutul meu aici...")
// Descarcă și afișează conținutul fișierului.
_out.println(sshSCP.downloadText("salut.txt"))
sshSCP.close()
Pentru a realiza încărcarea (upload) fișierelor existente în aplicație:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sshSCP = ssh.initSCP()
// Trimite un fișier care se află în storage/filesystem.
sshSCP.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sshSCP.upload("document.pdf", _app.file("document.pdf"))
sshSCP.close()
const sshSCP = ssh.initSCP()
// Trimite un fișier care se află în storage/filesystem.
sshSCP.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sshSCP.upload("document.pdf", _app.file("document.pdf"))
sshSCP.close()
sshSCP = ssh.initSCP()
# Trimite un fișier care se află în storage/filesystem.
sshSCP.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Trimite un fișier care se află în rădăcina aplicației.
sshSCP.upload("document.pdf", _app.file("document.pdf"))
sshSCP.close()
sshSCP = ssh.initSCP()
# Trimite un fișier care se află în storage/filesystem.
sshSCP.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Trimite un fișier care se află în rădăcina aplicației.
sshSCP.upload("document.pdf", _app.file("document.pdf"))
sshSCP.close()
val sshSCP = ssh.initSCP()
// Trimite un fișier care se află în storage/filesystem.
sshSCP.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sshSCP.upload("document.pdf", _app.file("document.pdf"))
sshSCP.close()
final sshSCP = ssh.initSCP()
// Trimite un fișier care se află în storage/filesystem.
sshSCP.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sshSCP.upload("document.pdf", _app.file("document.pdf"))
sshSCP.close()
Pentru a descărca (download) fișiere de pe server în aplicație:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sshSCP = ssh.initSCP()
// Descarcă fișierul în storage/filesystem.
sshSCP.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sshSCP.download("document.pdf", _app.file("document.pdf"))
sshSCP.close()
const sshSCP = ssh.initSCP()
// Descarcă fișierul în storage/filesystem.
sshSCP.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sshSCP.download("document.pdf", _app.file("document.pdf"))
sshSCP.close()
sshSCP = ssh.initSCP()
# Descarcă fișierul în storage/filesystem.
sshSCP.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Descarcă fișierul în rădăcina aplicației.
sshSCP.download("document.pdf", _app.file("document.pdf"))
sshSCP.close()
sshSCP = ssh.initSCP()
# Descarcă fișierul în storage/filesystem.
sshSCP.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Descarcă fișierul în rădăcina aplicației.
sshSCP.download("document.pdf", _app.file("document.pdf"))
sshSCP.close()
val sshSCP = ssh.initSCP()
// Descarcă fișierul în storage/filesystem.
sshSCP.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sshSCP.download("document.pdf", _app.file("document.pdf"))
sshSCP.close()
final sshSCP = ssh.initSCP()
// Descarcă fișierul în storage/filesystem.
sshSCP.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sshSCP.download("document.pdf", _app.file("document.pdf"))
sshSCP.close()
SFTP
SFTP este o formă de transfer și manipulare de fișiere și dosare care suportă aceleași funcționalități ca FTP, dar folosind SSH.
Pentru a iniția o nouă sesiune SFTP:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const sftp = ssh.initSFTP()
const sftp = ssh.initSFTP()
sftp = ssh.initSFTP()
sftp = ssh.initSFTP()
val sftp = ssh.initSFTP()
final sftp = ssh.initSFTP()
Inițiază obiectul SSHSFTP, care este clientul sesiunii.
Creează un dosar nou la distanță:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
sftp.createDirectory("cale/dosar-nou")
sftp.createDirectory("cale/dosar-nou")
sftp.createDirectory("cale/dosar-nou")
sftp.createDirectory("cale/dosar-nou")
sftp.createDirectory("cale/dosar-nou")
sftp.createDirectory("cale/dosar-nou")
Creează sau înlocuiește fișierul remote cu conținutul text transmis:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
sftp.uploadText("dosar/fisier.txt", "Conținutul meu!")
sftp.uploadText("dosar/fisier.txt", "Conținutul meu!")
sftp.uploadText("dosar/fisier.txt", "Conținutul meu!")
sftp.uploadText("dosar/fisier.txt", "Conținutul meu!")
sftp.uploadText("dosar/fisier.txt", "Conținutul meu!")
sftp.uploadText("dosar/fisier.txt", "Conținutul meu!")
Obține conținutul text al unui fișier remote:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const continutFisierRemote = sftp.downloadText("dosar/fisier.txt"))
_out.println(continutFisierRemote)
const continutFisierRemote = sftp.downloadText("dosar/fisier.txt"))
_out.println(continutFisierRemote)
continutFisierRemote = sftp.downloadText("dosar/fisier.txt"))
_out.println(continutFisierRemote)
continutFisierRemote = sftp.downloadText("dosar/fisier.txt"))
_out.println(continutFisierRemote)
val continutFisierRemote = sftp.downloadText("dosar/fisier.txt"))
_out.println(continutFisierRemote)
final continutFisierRemote = sftp.downloadText("dosar/fisier.txt"))
_out.println(continutFisierRemote)
Șterge definitiv un fișier remote:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
sftp.deleteFile("dosar/fisier.txt")
sftp.deleteFile("dosar/fisier.txt")
sftp.deleteFile("dosar/fisier.txt")
sftp.deleteFile("dosar/fisier.txt")
sftp.deleteFile("dosar/fisier.txt")
sftp.deleteFile("dosar/fisier.txt")
Șterge definitiv dosarul remote:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
sftp.deleteDirectory("dosar")
sftp.deleteDirectory("dosar")
sftp.deleteDirectory("dosar")
sftp.deleteDirectory("dosar")
sftp.deleteDirectory("dosar")
sftp.deleteDirectory("dosar")
Listează tot conținutul unui dosar:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
for (const i of sftp.list("cale/dosar")) {
if (i.directory) {
_out.print("Dosar: ")
} else if (i.regularFile) {
_out.print("Fișier: ")
} else {
_out.print("Altul: ")
}
_out.println(i.name)
_out.println("<br/>")
}
for (const i of sftp.list("cale/dosar")) {
if (i.directory) {
_out.print("Dosar: ")
} else if (i.regularFile) {
_out.print("Fișier: ")
} else {
_out.print("Altul: ")
}
_out.println(i.name)
_out.println("<br/>")
}
for i in sftp.list("cale/dosar":
if i.directory:
_out.print("Dosar: ")
elif i.regularFile:
_out.print("Fișier: ")
else:
_out.print("Altul: ")
_out.println(i.name)
_out.println("<br/>")
}
sftp.list("cale/dosar").each do |i|
if i.directory
_out.print("Dosar: ")
elsif i.regularFile
_out.print("Fișier: ")
else
_out.print("Altul: ")
end
_out.println(i.name)
_out.println("<br/>")
end
sftp.list("cale/dosar").forEach {
if (it.directory) {
_out.print("Dosar: ")
} else if (it.regularFile) {
_out.print("Fișier: ")
} else {
_out.print("Altul: ")
}
_out.println(it.name)
_out.println("<br/>")
}
for (i in sftp.list("cale/dosar")) {
if (i.directory) {
_out.print("Dosar: ")
} else if (i.regularFile) {
_out.print("Fișier: ")
} else {
_out.print("Altul: ")
}
_out.println(i.name)
_out.println("<br/>")
}
Returnează o listă de obiecte de tip SSHFile.
Pentru a realiza încărcarea (upload) fișierelor existente în aplicație:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// Trimite un fișier care se află în storage/filesystem.
sftp.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sftp.upload("document.pdf", _app.file("document.pdf"))
// Trimite un fișier care se află în storage/filesystem.
sftp.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sftp.upload("document.pdf", _app.file("document.pdf"))
# Trimite un fișier care se află în storage/filesystem.
sftp.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Trimite un fișier care se află în rădăcina aplicației.
sftp.upload("document.pdf", _app.file("document.pdf"))
# Trimite un fișier care se află în storage/filesystem.
sftp.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Trimite un fișier care se află în rădăcina aplicației.
sftp.upload("document.pdf", _app.file("document.pdf"))
// Trimite un fișier care se află în storage/filesystem.
sftp.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sftp.upload("document.pdf", _app.file("document.pdf"))
// Trimite un fișier care se află în storage/filesystem.
sftp.upload("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Trimite un fișier care se află în rădăcina aplicației.
sftp.upload("document.pdf", _app.file("document.pdf"))
Pentru a descărca (download) fișiere de pe server în aplicație:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
// Descarcă fișierul în storage/filesystem.
sftp.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sftp.download("document.pdf", _app.file("document.pdf"))
// Descarcă fișierul în storage/filesystem.
sftp.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sftp.download("document.pdf", _app.file("document.pdf"))
# Descarcă fișierul în storage/filesystem.
sftp.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Descarcă fișierul în rădăcina aplicației.
sftp.download("document.pdf", _app.file("document.pdf"))
# Descarcă fișierul în storage/filesystem.
sftp.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
# Descarcă fișierul în rădăcina aplicației.
sftp.download("document.pdf", _app.file("document.pdf"))
// Descarcă fișierul în storage/filesystem.
sftp.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sftp.download("document.pdf", _app.file("document.pdf"))
// Descarcă fișierul în storage/filesystem.
sftp.download("tabel.xlsx", _storage.filesystem("server", "tabel.xlsx").file())
// Descarcă fișierul în rădăcina aplicației.
sftp.download("document.pdf", _app.file("document.pdf"))
Nu uitați să închideți întotdeauna sesiunea SFTP:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
sftp.close()
sftp.close()
sftp.close()
sftp.close()
sftp.close()
sftp.close()