Aku mencabut rambutku karena ini. Saya telah memeriksa semua hasil google untuk / dev / tty: tidak ada perangkat atau alamat seperti itu, tidak ada yang berlaku untuk apa yang saya lakukan / tidak ada solusi yang berhasil.
Saya memiliki skrip yang ssh'es ke komputer lain (menggunakan kunci publik) dan menjalankan dirinya sendiri (dengan parameter yang berbeda - tidak loop). Sebut rpmInstallScript.bash ini
Pada satu titik dalam skrip, ia menjalankan rpm -ivh untuk menginstal beberapa paket RPM. Selama instalasi dari salah satu paket ini, sebuah file diletakkan di / var / tmp disebut rpm-tmp. [6 karakter acak]
File ini adalah skrip, dan saya kira itu dijalankan pada beberapa titik selama instalasi rpm.
Dalam skrip, ada beberapa kejadian
echo [something] > /dev/tty
atau
echo [something] | tee [something] > /dev/tty.
Semua kejadian ini gagal dengan / dev / tty: tidak ada perangkat atau alamat tersebut. Jika saya ssh ke mesin secara manual dan baik paket rpm sendiri, jalankan skrip rpm-tmp atau jalankan rpmInstallscript.bash, itu berfungsi dengan baik.
Saya terhubung ke mesin jarak jauh dengan ssh -t, oleh karena itu harus ada tty, benar?
Saya tidak melihat mengapa ini tidak berhasil, terutama karena melakukannya secara manual, bahkan tanpa opsi -t, berfungsi dengan baik. Satu-satunya hal yang dapat saya pikirkan adalah bahwa ini bukan sesi interaktif - tetapi / dev / tty masih ada, benar?
Edit - hasil kesalahan dari:
ssh -t root@[machine] -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <<DONE
./rpmInstallScript.bash
di mana rpmInstallScript.bash menjalankan rpm -ivh, skrip yang dihasilkan ditempatkan di / var / tmp menggunakan> / dev / tty - inilah yang gagal
Edit lagi: menggunakan -tt memberi:
tcgetattr: Inappropriate ioctl for device
Hanya ketika menjalankan dari skrip - secara manual menjalankan ssh -tt dan kemudian echo test> / dev / tty berfungsi dengan baik.
Saya hanya bisa berasumsi ini adalah kegagalan untuk memaksa-menciptakan tty.
Apakah ada cara lain untuk 'menghasilkan' tty? Bisakah saya memalsunya dengan membuat file bernama / dev / tty?
-t
pilihan harus telah memecahkan ini. Coba letakkanset -x
di awal skrip, sehingga Anda dapat melihat semua hal yang dilakukannya. Mungkin ada sesuatu yang memeriksa variabel lingkungan seperti$TERM
dan melepaskan dari terminal ketika ini tidak diatur.