我使用shell上的ssh在远程服务器上运行一个简单的命令。
我现在登录到myHost01中,我正在myHost02上运行这个命令
预期的结果是this is a test myHost02。然而,我得到了this is a test myHost01
这是我的命令
sshpass -p root ssh -q root@127.0.0.2 "echo this is a test `hostname`"
我不知道它为什么要使用我正在运行命令的服务器的主机名!
同样值得注意的是,当我运行这个
sshpass -p root ssh -q root@127.0.0.2 "
我在~/project/目录上的ubuntu上有一个可执行脚本,我试图将该路径添加到/etc/environment。所以,我编辑到这个PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:~/project/"的路径。然后,我注销并重新登录,以su的形式打开终端,并运行命令在该文件夹上执行我的脚本,但结果是command not found。
然后,我将/etc/environment中的路径更改为PATH="/usr/local/sbin:/usr/local/bi
通过SSH连接到远程服务器。
有时,我运行一个特定的bash脚本。当满足某些条件(它的工作成功完成)时,我希望自动退出SSH隧道。在普通的登录shell中,我只需输入logout即可退出。
我不能用bash脚本来完成这个任务。如果我将logout放在bash脚本中,错误是:
logout: not login shell: use `exit'
查询:如何从bash脚本自动从SSH连接中登录?
我有一台主机可以重新启动或重新连接很多次。我希望在我的dev机器上运行一个脚本,它会不断地尝试登录到该机器,如果成功的话,将运行一个特定的命令(跟踪日志数据)。编辑:为了澄清,连接需要保持打开。log命令一直跟踪,直到我手动停止它。
到目前为止我拥有的
#!/bin/bash
IP=192.168.178.1
if (("$#" >= 1))
then
IP=$1
fi
LOOP=1
trap 'echo "stopping"; LOOP=0' INT
while (( $LOOP==1 ))
do
if ping -c1 $
我试图制作一个脚本,只是为了测试是否可以将抛出的ssh作为根用户连接到我在文件中的服务器列表中,目前我有以下内容:
for i in $(cat servers.list); do
if [ "ssh root@$i" ]
then
echo "can connect as root in server $i"
else
echo "can't connect as root in server $i"
fi
done
但它总是说,我可以连接,即使不是这样。
我真的很感谢你的帮助。
我需要向几个设备发送命令列表。对于每个IP,使用来自用户和密码文本框的给定凭据打开SSH连接,运行所有命令并将输出返回到输出文本框。
通常我会用
plink.exe -ssh admin@172.16.17.18 -pw PassW0rd "command"
不幸的是,远程主机不允许我这样做:
Sent password
Access granted
Opening session as main channel
Opened main channel
Server refused to start a shell/command
FATAL ERROR: Serve