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 时候的样子;结合这两种状态, 问题就得以解决啦。