Saya ingin menggunakan shell untuk menjalankan skrip di server jauh. Saya ingin menangkap output skrip itu (pesan logging-nya) dan kode keluar yang dikembalikan.
Jika saya melakukan ini:
ssh user@server /usr/local/scripts/test_ping.sh
echo "$?"
Saya mendapatkan kode keluar tetapi tidak bisa menangkap pesan logging jarak jauh.
Jika saya melakukan ini:
local RESULTS=$(ssh user@server /usr/local/scripts/test_ping.sh)
echo "$?"
LOG "${RESULTS}";
Saya bisa mencatat output saya menggunakan fungsi LOG saya tetapi sepertinya tidak bisa mendapatkan kode keluar yang benar, saya berasumsi kode yang saya dapatkan adalah kode dari penugasan varible.
Saya ingin terus menggunakan fungsi LOG saya untuk menangkap semua output karena memformat dan mengirimkan sesuatu ke file, syslog, dan layar untuk saya.
Bagaimana saya bisa menangkap hasil dalam var DAN mendapatkan kode keluar yang benar dari skrip jarak jauh?
Jawaban:
Alasan Anda tidak mendapatkan kode kesalahan yang benar adalah karena
local
sebenarnya hal terakhir yang dieksekusi. Anda perlu mendeklarasikan variabel sebagai lokal sebelum menjalankan perintah.Anda dapat melihat masalahnya di sini:
sumber
"Lokal" tampaknya menjadi masalah. Ini bekerja untuk saya:
sumber
Sebenarnya, tidak ada jawaban di atas yang menjebak kode kesalahan dan pesan ssh, yang dapat dilakukan sebagai berikut (abaikan fungsi kustom saya):
sumber