scp是我最常用的遠程文件拷貝工具,今天發現突然不能用了:
svan-mac:hive-tools xiean$ scp -Pxx target/urs-hive-tools-jar-with-dependencies.jar hzxiean@xxxxxxx:/home/hzxiean/
Pseudo-terminal will not be allocated because stdin is not a terminal.
起初,懷疑是我在IDE 的termail 里邊執行時的問題。
於是我打開自帶的termail 發現還是報同樣的問題。
額,只能 google 找找看咯,結果找了一圈沒有找到 scp相關的, 到是有找到ssh相關的, 看了一下需要加個參數 -tt 強制ssh使用 -tty模式。
於是我也學學ssh 的, 在scp是加上 -tt , 但是 然並卵。
我開始回想我昨天的時候都好好的, 今天怎么就不行了呢?而且我直接ssh 是OK的, 奇怪哈,於是想到scp 在執行 拷貝文件的時候會先隱藏的調用ssh ,然后在執行文件傳輸。
那么問題就迎刃而解了, 因為 xxx 這台服務器是我們的挑板機,然而我基本上沒吃登陸挑板機都上 到同一台 master 上進行后續操作的, 那么昨天就懶了一下, 直接在 挑搬機的 .bashrc 文件里邊加了個 命令行,以此達到 我在本地 ssh 挑板機的時候, 直接幫我轉到工作服務器上。
ok , 那么我先把 昨天加到 .bashrc 上的命令給去掉, 試試看是不是正如我猜測的一樣。
=-----
svan-mac:hive-tools xiean$ scp -Pxx target/urs-hive-tools-jar-with-dependencies.jar hzxiean@xxxxxx:/home/hzxiean/
urs-hive-tools-jar-with-dependencies.jar 100% 3874KB 968.5KB/s 00:04
結論:
有時候拋出的錯,並不是它所呈現出來的樣子, 我們需要想想OK時候的樣子,再想想Bad 時候的樣子;結合這兩種狀態, 問題就得以解決啦。