บางครั้ง scp หรือ sftp มีปัญหา
บางครั้งที่เราใช้ คำสั่ง scp หรือ sftp แล้วพบว่า มันหยุดทำงานไปดื้อๆ ก่อนที่เริ่มทำงานจริงๆ ทั้งที่คำสั่งที่พิมพ์เข้าไปก็ไม่ผิด
หนึ่งในสาเหตุที่พบก็คือ บางครั้งเรามีการสร้าง banner ไว้ ด้วยคำสั่ง echo เพื่อให้เวลาเปิด terminal แล้วจะมีข้อความทักทาย หรือ memo เตือนความจำแสดงขึ้นมา
ข้อความพวกนั้น เรามักจะใส่เอาไว้ในไฟล์ .bashrc, .cshrc และอื่นๆ
ซึ่งข้อความพวกนี้มันไป เหมือน Interrupt ตัวคำสั่ง เพราะคำสั่งพวกนี้ไม่ได้คาดเอาไว้ว่าจะมีข้อความใดๆ ย้อนเข้าไปใน stream ที่เปิดขึ้นมา เลยทำให้มันหยุดทำงานออกไปนั่นเอง
วิธีแก้ง่ายๆอย่างนึงคือการเอา คำสั่ง echo ออกไม่ให้แสดงข้อความใดๆออกมา นั่นเอง
หรือ ถ้าเราต้องการให้มี banner เหล่านี้เอาไว้
เราอาจจะให้ script .bashrc หรือ .cshrc ทำการตรวจสอบว่าตอนนี้อยู่ใน Interactive Shell หรือไม่ โดยการตรวจสอบว่ามีการเซ็ตค่าตัวแปร $prompt ขึ้นมาหรือไม่
ถ้ามี แสดงว่าเป็น Interactive shell ก็ให้ทำการแสดง Banner ออกไป แต่ถ้าไม่ แสดงว่าเป็น shell ที่อาจจะถูกเรียกทำงานด้วยคำสั่งใดๆ เช่น scp ก็ให้มันไม่ทำการแสดง banner ออกมา
เช่น
if ($?prompt) then
echo “Hello”
endif
นอกจากนี้ SSH ยังมี option ในการแสดง banner อย่างอื่นอยู่อีก
แต่ยังไม่มีเวลาดูตอนนี้ ก็ขอทิ้ง Link เผื่อไว้ตอนนี้ก่อนครับ
https://lists.freebsd.org/pipermail/freebsd-questions/2010-June/217421.html
https://unix.stackexchange.com/questions/355016/welcome-banner-stopping-scp/355026
https://serverfault.com/questions/653399/ssh-motd-per-user






