我将一堆别名命令放在一个文件夹中,主要是SSH,所以不必再输入...
ssh [user]@[server]
每天我需要做10次,只需要输入...
server
...并且别名脚本被触发。该脚本只是命令...
ssh [user]@[server]
这一切都很好,但我想知道在Bash中是否有一种方法,可以不静默地执行ssh命令,而是显示正在执行的命令?
我将一堆别名命令放在一个文件夹中,主要是SSH,所以不必再输入...
ssh [user]@[server]
每天我需要做10次,只需要输入...
server
...并且别名脚本被触发。该脚本只是命令...
ssh [user]@[server]
这一切都很好,但我想知道在Bash中是否有一种方法,可以不静默地执行ssh命令,而是显示正在执行的命令?
-x
来调试脚本,它将回显命令和参数。你可以从这里获取更多信息。bash -x script.sh
你也可以针对文件的特定部分执行此操作(来自上面链接的第2.3.2节):
set -x # activate debugging from here
ssh user@example.com ...
set +x # stop debugging from here
< p > -x
的输出可能对你寻找的内容有点冗长,因为它是用于调试而不是记录日志。
您最好只编写自己的echo
语句 - 这将使您完全掌控输出。
在脚本的顶部而不是命令行中添加"-x":
#!/bin/bash -x
ssh user@server
./server
导致结果为:
+ ssh user@server
user@server's password: ^C
set -x
,这样看起来更好看。 - undefinedssh_config
文件。~/.ssh/config
中:Host deadpool
Hostname abcdefghijklmnop.my.verbose.hosting-service.com
User scphantm
# Lots of other useful options here
那么,不要输入这个:
$ ssh scphantm@abcdefghijklmnop.my.verbose.hosting-service.com
$ ssh deadpool
或者
$ scp deadpool:/var/log/apache/access.log access_logs.txt
或者
$ any_other_ssh-based_command deadpool
配置文件参考:
Host
限制以下声明(直到下一个Host
关键字)仅适用于与关键字后给定的模式之一匹配的主机。
HostName
指定要登录的实际主机名。这可用于指定主机的昵称或缩写。默认值是命令行上给出的名称。数字 IP 地址也被允许(无论是在命令行上还是在HostName
规范中)。
User
指定要登录的用户。当在不同的机器上使用不同的用户名时,这很有用。这样可以避免记住在命令行上给出用户名的麻烦。
echo
语句可能是最好的选择;那样你就完全掌控了日志记录。我已经将其纳入我的答案中。 - Rob Hruska