ทำให้เอสเอสเงียบอย่างแท้จริง


15

ฉันครึ่งทางผ่านการเขียนสคริปต์ nagios และฉันได้รับความรำคาญกับ SSH

ตามหน้าคน:

-q       Quiet mode.  Causes all warning and diagnostic messages to be
         suppressed.

แต่ถ้าฉันเปิดใช้งานสถานะเงียบแล้วผ่านพอร์ตที่ไม่ถูกต้องฉันยังคงได้รับข้อผิดพลาด:

$ ssh user@localhost -q -p test
Bad port 'test'

นี่เป็นปัญหาเพราะนั่นจะทำให้ข้อความนั้นเป็นบรรทัดแรกและนั่นคือสิ่งที่ Nagios คว้า ฉันต้องการส่งออกบางอย่างเช่น "คำเตือน | ข้อผิดพลาด SSH" หลังจากรับ!= 0รหัสออกจาก ssh แต่บรรทัดแรกที่ฉันสามารถส่งออกได้จะเป็น 2 บรรทัด

ฉันจะทำให้ SSH TRULY เงียบได้อย่างไร

หมายเหตุ: ฉันไม่แน่ใจว่าจะโพสต์คำถามนี้บน serverfault, superuser หรือ stackoverflow ฉันไปกับ serverfault เนื่องจากฐานผู้ใช้อาจมีประสบการณ์มากที่สุดกับ cli SSH และวิธีแก้ไขปัญหาการเขียนสคริปต์ cli


2
ไม่ใช่ว่าช่วยได้จริงๆ แต่ดูเหมือนว่าคู่มือได้รับการอัปเดตเพื่อแสดงถึงสิ่งนี้ ในฐานะของ OpenSSH 5.8 (และอาจจะก่อนหน้านี้) ก็กล่าวว่า " ส่วนใหญ่คำเตือนและการวินิจฉัยโรค" จะถูกระงับแทน " ทุกคำเตือนและการวินิจฉัยโรค"
James Sneeringer

น่ารำคาญนะ! จุดที่ดีแม้ว่า
SimonJGreen

ทำไมไม่ลองหลีกเลี่ยงการพยายามเชื่อมต่อกับพอร์ตที่ไม่ถูกต้อง
Zoredache

1
@Zoredache นี่เป็นข้อผิดพลาดในการจับ / จัดการ หลีกเลี่ยงการพิมพ์ผิดไม่ได้แก้ปัญหาในวิธีการจัดการอย่างใดอย่างหนึ่งได้อย่างสง่างาม;)
SimonJGreen

คำตอบ:


25
ssh user@localhost -q -p test 2> /dev/null 

จะเปลี่ยนเส้นทางstderrไปที่ / dev / null


2
ตอนนี้ฉันรู้สึกเหมือนหัวนมที่สมบูรณ์ จะสอนให้ฉันเขียนโปรแกรมตอนดึก!
SimonJGreen

-2

หรือวิธีการจัดเก็บที่ง่ายที่สุดLogLevel QUIETในไฟล์กำหนดค่า:

$ cat ~/.ssh/config 
Host *
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  LogLevel QUIET
  ...

จบลงด้วยการได้รับผลลัพธ์เดียวกันกับด้านบนโดยพิมพ์น้อยลง

ไชโย


1
ฉัน downvote คำตอบเพราะมันไม่ได้แก้ปัญหาซึ่งถามที่นี่:% ssh -p test -oLogLevel = QUIET localhost พอร์ตที่ไม่ดี 'ทดสอบ'
cstamas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.