相关疑难解决方法(0)

如何检测 shell 是否由 SSH 控制?

我想从 shell 脚本(更具体地说是 .zshrc)中检测它是否是通过 SSH 控制的。我尝试了 HOST 变量,但它始终是运行 shell 的计算机的名称。我可以访问来自 SSH 会话的主机名吗?比较两者将解决我的问题。

每次登录时都会出现一条消息,说明上次登录时间和主机:

Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1
Last login: Fri Mar 18 23:11:56 2011 from max
Run Code Online (Sandbox Code Playgroud)

这意味着服务器具有此信息。

ssh zsh shell-script

87
推荐指数
4
解决办法
5万
查看次数

为什么 bashrc 会检查当前 shell 是否是交互式的?

在我的拱安装,/etc/bash.bashrc以及/etc/skel/.bashrc包含这些行:

# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Run Code Online (Sandbox Code Playgroud)

在 Debian 上,/etc/bash.bashrc有:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Run Code Online (Sandbox Code Playgroud)

并且/etc/skel/.bashrc

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
Run Code Online (Sandbox Code Playgroud)

man bash然而,根据,非交互式 shell 甚至不读取这些文件:

   When  bash  is  started  non-interactively,  to run a shell script, for
   example, it looks for the variable …
Run Code Online (Sandbox Code Playgroud)

bash bashrc

79
推荐指数
3
解决办法
2万
查看次数

如何通过 scp 最好地复制大量小文件?

我有一个目录,里面有几 GB 和几千个小文件。我想用 scp 在网络上复制它不止一次。源机器和目标机器上的 CPU 时间很便宜,但是单独复制每个文件所增加的网络开销是巨大的。我会将它 tar/gzip 并运送过来,但源计算机磁盘不足。

有没有办法tar -czf <output> <directory>将 scp的输出通过管道传输?如果没有,还有其他简单的解决方案吗?我的源机器很古老(SunOS),所以我不想在上面安装东西。

scp tar

71
推荐指数
5
解决办法
8万
查看次数

scp 成功将文件传输到主机,但文件不会显示

我正在尝试将文件从本地机器传输到远程机器。

当我scp不带-v选项使用时,它只提供以下输出:

.--. or '\033[0;1;33;93m.-\033[0;1;32;92m-.\033[0m'
Run Code Online (Sandbox Code Playgroud)

当我尝试scp使用-v选项时,我得到以下输出,似乎文件传输成功:

——

$ scp -v file.sh  user@IP:/home/user/foo

debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LC_PAPER = tr_TR.UTF-8
debug1: Sending env LC_ADDRESS = tr_TR.UTF-8
debug1: Sending env LC_MONETARY = tr_TR.UTF-8
debug1: Sending env LC_NUMERIC = tr_TR.UTF-8
debug1: Sending env LC_ALL = en_US.UTF-8
debug1: Sending env LC_TELEPHONE = tr_TR.UTF-8
debug1: Sending env LC_IDENTIFICATION = tr_TR.UTF-8 …
Run Code Online (Sandbox Code Playgroud)

scp

4
推荐指数
1
解决办法
7383
查看次数

由于 .bashrc 中设置的登录问候语,来自远程主机的 scp 失败

scp来自远程主机的简单文件(实际上是本地运行的虚拟机,但这无关紧要)失败,没有显示任何错误消息,但显然没有复制所需的文件:

scp myuser@myhost:~/.bashrc ~/.bashrc.ubuntu

它唯一显示的是

================================================================================

我认为这很奇怪,因为这是我在遥控器上的登录问候语中显示的第一行,如下所示:

================================================================================
Welcome to <Ubuntu 12.04.2 LTS>
You are <myuser> logged into <hostname> (my_ipaddress)
Today is <Wed Aug 28 16:48:49 EDT 2013>
================================================================================
Run Code Online (Sandbox Code Playgroud)

以下.bashrc是定义该问候语的遥控器上的内容:

1 if [ -f ~/.bash_aliases ]; then
2     . ~/.bash_aliases
3 fi
4 
5 
6 export PS1='\w@\t>'
7 
8 set -o vi
9 
10 printf %80s |tr " " "="
11 echo
12 
13 echo "Welcome to <"`lsb_release -d | sed 's/Description\:\s*//'`">"
14 
15 export IPADDR=`hostname …
Run Code Online (Sandbox Code Playgroud)

prompt scp bashrc

3
推荐指数
1
解决办法
3081
查看次数

scp 打印一些奇怪的字符并且不复制文件

我正在尝试使用 scp 从网络中的另一台计算机复制一个小文件,该计算机运行的是 Linux Mint 18.3。

我从 macOS 尝试过,我得到了这个:

$ scp fyde@192.168.1.211:/home/fyde/Downloads/notes/ubuntu.txt .                          
fyde@192.168.1.211's password:
\033]4;0;#2b1229\033\\033]4;1;#FFD36D\033\\033]4;2;#6559B6\033\\033]4;3;#E1549E\033\\033]4;4;#788FA3\033\\033]4;5;#778BE1\033\\033]4;6;#D88AA7\033\\033]4;7;#d2d8d2\033\\033]4;8;#939793\033\\033]4;9;#FFD36D\033\\033]4;10;#6559B6\033\\033]4;11;#E1549E\033\\033]4;12;#788FA3\033\\033]4;13;#778BE1\033\\033]4;14;#D88AA7\033\\033]4;15;#d2d8d2\033\\033]10;#d2d8d2\033\\033]11;#2b1229\033\\033]12;#FFD36D\033\\033]13;#d2d8d2\033\\033[s\033[1000H\033[8m\033]708;#2b1229\033\\033[u\033]13;#d2d8d2\033\C0644 6743 ubuntu.txt
Run Code Online (Sandbox Code Playgroud)

我在 Ubuntu 机器上尝试过,但得到了类似的结果:

$ scp fyde@192.168.1.211:/home/fyde/Downloads/notes/ubuntu.txt .
fyde@192.168.1.211's password:
C0644 6743 ubuntu.txt
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的文件,得到了相同的结果,从其他计算机复​​制工作正常。

有谁知道发生了什么?

scp

1
推荐指数
1
解决办法
1067
查看次数

标签 统计

scp ×4

bashrc ×2

bash ×1

prompt ×1

shell-script ×1

ssh ×1

tar ×1

zsh ×1