Betik sıfırla çıkar, tünel görünür ve sonraki çalıştırma daha parola istemeden reddedilir. Ya da aynı komut bir uçbirimde çalışır ve zamanlanmış bir işten «olay bulunamadı» hatasıyla başarısız olur; bu hata hiçbir yararlı şeyi adlandırmaz. İkisi de ağ arızası değil, AnyConnect istemcisinin standart girdi konuşmasının bozulmasıdır. Girişi yazılı bir soru-cevap olarak ele alın, başarısızlıklar öngörülebilir ve küçük olur.

Aynı komut neden betiğin içinde başarısız olur

İstemci yanıtlarını standart girdiden okur, her istem için bir satır, ağ geçidinin onları istediği sırayla. İstem sayısını değiştiren her şey, örneğin yeni bir banner, grup seçici veya ikinci faktör meydan okuması, sonraki her yanıtı bir satır kaydırır. Ardından istemci parola beklediği yerde kullanıcı adını okur ve ikisine de işaret etmeyen bir başarısızlık bildirir.

Ünlem işareti içeren bir parola daha sessiz bir ikinci başarısızlık ekler. Çift tırnak içinde kabuk onu istemci bir şey görmeden çok önce genişletir.

Yükü tek tırnak içine alın, karakter zarar görmeden yol alır. Bütün düzeltme budur ve aynı kimlik bilgisinin yazıldığında çalışıp kaydedildiğinde başarısız olduğu bütün bir rapor sınıfını açıklar. Ağ geçidini denetlemeden önce kabuğun ne yaptığını denetleyin: yükü tam baytları gösteren bir sarmalayıcıdan geçirerek yazdırın ve satırları sayın. Bu araştırmaların çoğu tam orada biter.

Yanıtları istemcinin istediği sırayla yazın

İstemciyi bir kez etkileşimli çalıştırın ve her istemi sırayla not edin. Grup seçici yalnızca ağ geçidi birkaç profil yayımladığında görünür, banner istemi ise yalnızca bir tane yapılandırıldığında görünür. Yanıt dosyası gerçekten yöneldiğiniz ağ geçidiyle eşleşmelidir, belgelerdekiyle değil.

Sonra dosyayı tam o sırayla oluşturun, her satırda bir yanıt. Grup dizini istemcinin listelediği sayıdır, bir belgedeki profilin konumu değil. Bannerı yalnızca ağ geçidiniz gönderiyorsa kabul edin ve o ağ geçidinin sorduğu bilinen her ek soru için bir satır ekleyin. İstemciyi etkileşimsiz bayrakla başlatın ki uçbirim beklemek yerine dosyayı tüketsin.

connect vpn.lab.example
0
username
password
y
exit
/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txt

Aynı dizi, diskte dosya tutmamayı tercih ettiğinizde bir boru üzerinden de gelebilir. Alıntılama kuralları hâlâ hayatta kalıp kalmayacağına karar verir.

Kimlik bilgisini süreç listesinin dışında tutun

Komut satırındaki bir argüman sürecin tüm ömrü boyunca her yerel kullanıcı tarafından okunabilir, bu yüzden parola bir dosyaya veya boruya aittir ve asla argüman listesine ait değildir. O dosyayı yalnızca betiği çalıştıran hesap için okunabilir yapın ve iş bittiğinde silin. macOS'ta ikili dosya genellikle Linux'takiyle aynı yoldadır, ancak varsaymak yerine kurulu konumu doğrulayın. Her iki yolu deneyen bir sarmalayıcı olay raporundan kısadır.

printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.example

Betiğin sonsuza kadar yeniden denemesine de izin vermeyin. Değişen bir banner veya gece boyunca süresi dolan bir parola, sabit bir yanıt dosyasını yeniden deneme döngüsüne çevirir ve hesabı kilitleyen tam olarak o döngüdür.

Bir kez başarısız olun, istemcinin kendi hata metnini yazdırın ve çıkın. Zamanlanmış bir iş, diğer herhangi bir gözetimsiz görev gibi aynı kimlik ve kimlik bilgisi kullanılabilirliği incelemesine ihtiyaç duyar, çünkü sessizce süresi dolan bir kimlik bilgisi gece üçteki bir kesintiden ayırt edilemez.

Çıkış koduna güvenmeden önce oturumu doğrulayın

Bağlı bir durum tünelin var olduğunu kanıtlar, fazlasını değil. Betik gerçek işe başlamadan önce onun üzerinden erişilebilir olması gereken bir kaynağı test edin ve oradaki başarısızlığı başarısız girişten farklı bir arıza olarak ele alın. Aksi halde hedefine ulaşamayan tamamen iyi bir bağlantıyı yeniden denersiniz.

Bağlantıyı kesmeden önce ve sonra istemciye durumunu sorun, çünkü eski bir oturum bir sonraki bağlantıyı reddedebilirken betiğiniz başarı bildiriyor olabilir.

/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnect

Durum çıktısını çıkış kodunun yanına kaydedin, çünkü tek başına kod reddedilen bir girişi hiç kapanmamış bir oturumdan ayıramaz. Ağ geçidi ikinci bir faktör veya etkileşimli onay istediğinde o adımı betiklemeyi bırakın ve onun yerine istemcinin desteklediği mekanizmayı kullanın. Sabit bir yanıt dosyası, kontrol ettiğiniz bir kimlik bilgisi için kolaylıktır, kontrol etmediğiniz bir kimlik doğrulama adımını atlamanın yolu değildir. Kapsamı bu kadar dar tutun ve bu kısa bir betik olarak kalır.

Sabit yanıt dosyası ne zaman yanlış araçtır

İkinci bir faktör veya onay istemi bu deseni tamamen bozar ve bu bir betik bilmecesi değil tasarım sınırıdır. O adım için istemcinin desteklediği herhangi bir mekanizmayı kullanın yanıtı önceden tahmin etmek yerine. Sabit bir dosya yalnızca çalıştırmalar arasında aynı kalan kimlik bilgileri için işe yarar.

İki eski kimlik bilgisi stili de AnyConnect ile karıştırılır. vpnc profili başka bir protokol konuşur ve grup adını IPSec tanımlayıcısı olarak ister, ardından paylaşılan bir grup sırrı, ardından kendi hesap bilgilerinizi.

Protokoller farklı olduğundan vpnc yalnızca AnyConnect profilleri yayımlayan bir ağ geçidine ulaşamaz ve o hizmet için olağan açık alternatif anyconnect protokolü seçilmiş openconnect'tir. pcf dosyası eski Cisco istemcisine aittir ve ana bilgisayarı, grup adı ve grup parolası hâlâ Cisco IPsec konuşan bir istemcide yeniden girilebilse de dosya istemciler arasında taşınmaz. Sıra dışı bir bağlantı noktası veya standart dışı bir tünelleme kipi genellikle o aktarımda kaybolur. Bir araç seçmeden önce ağ geçidinin hangi protokolü sunduğuna karar verin.

İlgili makaleler