Saya ingin menghilangkan beberapa peringatan yang saya dapatkan ketika menjalankan lingkungan build otomatis (Scrutinizer-CI, tepatnya).
Menggali di sini, saya telah menemukan solusi ini yang dapat saya tambahkan ke skrip yang menyiapkan wadah:
ssh-keyscan -H -p 1234 domain.tld >> ~/.ssh/known_hosts
Sepertinya ini bukan cara terbaik untuk melakukannya. Tidak yakin apakah itu masalah keamanan atau apa, tetapi peringatan tentang tuan rumah hilang.
Masalahnya adalah bahwa saya masih mendapatkan peringatan untuk IP yang diselesaikan domain.
Saya kira ini adalah satu-satunya masalah
ssh-keyscan -H -p 1234 123.231.321.213 >> ~/.ssh/known_hosts
Tetapi bagaimana jika saya tidak tahu IP, atau jika tuan rumah tidak selalu menyelesaikan ke IP yang sama?
Ada beberapa perintah / skrip yang bisa saya tulis untuk menyelesaikan IP dan meneruskannya ke skrip di atas?
sumber
| grep ^[0-9] | xargs -r -n1
? Menggunakan salah satu atau contoh lainnya, saya mendapatkan banyak kesalahan. Sebagai gantinya, menggunakanssh-keyscan -H -p 10022 $(dig -t a +short domain.tld)
saya mendapatkan apa yang tampaknya menjadi hasil yang sah. Bahkan, hanyadig -t a +short domain.tld
mengembalikan satu alamat IP.| grep ^[0-9]
hanya menggunakan IP dikembalikan oleh penggalian (jika hostname dimulai dengan angka, grep akan perlu dimodifikasi untuk lebih mengenali IP). Saat menguji dengan www.yahoo.com, saya mendapatkan dua IP dan 'fd-fp3.wg1.b.yahoo.com.', Yang merupakan CNAME untuk www.yahoo.com, dalam output gali. ssh-keyscan tampaknya berperilaku dengan periode trailing, tapi saya ingin mengecualikan CNAME. The| xargs -r -n1
menciptakan satu eksekusi ssh-keyscan per hasil, tetapi tidak mengeksekusi ssh-keyscan sama sekali jika tidak ada hasil.