- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个登录到另一台服务器并检查一些不同文件夹的磁盘使用情况的脚本 (test.sh):
测试.sh:
DIRS="dir_A dir_B dir_C"
for DIR in $DIRS
do
sshpass -p user_password ssh -o StrictHostKeyChecking=no user_name@host 'cd /opt/app/$DIR;SIZE=$(du -s);echo "YVALUE="$SIZE > ../size_$DIR.txt'
done
但是,变量 DIR 永远不会传递给脚本。当我运行脚本时它是空的。我尝试在 $DIR 周围使用 {} 但仍然没有成功。我错过了什么?感谢您的帮助!
最佳答案
基本上,使用双引号而不是单引号。如有必要,您仍然可以用单引号连接:
sshpass -p user_password ssh -o StrictHostKeyChecking=no user_name@host 'cd /opt/app/'"$DIR"';SIZE=$(du -s);echo "YVALUE="$SIZE > ../size_'"$DIR".txt
我刚刚注意到一些事情:du -s
产生了两列的输出,所以它可能还没有被正确使用。也许仍然需要像 SIZE=${SIZE%$'\t'*}
这样的东西。
另一种方式是通过输入发送目录,让另一端读取:
sshpass -p user_password ssh -o StrictHostKeyChecking=no user_name@host 'read -r DIR; cd "/opt/app/$DIR"; SIZE=$(du -s); echo "YVALUE=$SIZE" > "../size_$DIR.txt"' <<< "$DIR"
如果目录包含可能导致语法错误的空格或字符,这将很有帮助。还建议使用数组:
DIRS=('DIR 1' 'DIR 2' 'DIR 3')
for DIR in "${DIRS[@]}"; do
sshpass ...
done
关于linux - 在循环脚本中将变量传递给 sshpass 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24866413/
我正在尝试在 java 中执行一个简单的 sshpass 命令: String command = "sshpass -p password ssh user@host 'echo test' ";
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
有没有办法在使用 sshpass 命令时尝试多个密码?我有一个名为 hosts.txt 的 txt 文件,其中列出了多个系统的 IP 地址,每个系统都使用不同的密码(例如 - 'mypasswd'、'
我在 ubuntu 11.04 上使用 sshpass 以非交互方式传递密码。 当我使用 sshpass 和 scp 时 sshpass -p '123' scp sayuj@192.168.1.51
我正在尝试自动执行从一台服务器到另一台服务器的文件传输或 FTP。 #!/bin/bash ### In this model, the same filename is processed on e
语境 我有一个应用程序,我在其中使用单元测试,我需要持续交付它。我选择使用github + travis + docker。 我的 Docker 容器是一个带有 openSSL 的 Ubuntu 12
我想在不输入密码的情况下使用 bash 脚本列出远程机器上的文件。 我正在使用以下命令来做到这一点 sshpass -p password ssh user@ubuntusite.net "ls /
我有一个 Python 脚本,它使用 sshpass 对机器进行 ssh 访问 Popen(["sshpass","-p", "test!@#", "ssh", "-o UserKnownHostsF
我正在尝试创建一个登录到另一台服务器并检查一些不同文件夹的磁盘使用情况的脚本 (test.sh): 测试.sh: DIRS="dir_A dir_B dir_C" for DIR in $DIRS d
我有一个包含以下函数的 python 脚本: def upload2server(file): host_name = 'example.ex.am.com' port_num = '
我有一个包含以下行的脚本 sshpass -p 'password' ssh user@server "touch /tmp/test" 这在我运行脚本时有效,但如果我将脚本放入 cron 中,它就不
我是 Linux-SA 服务器自动化工具环境的新手。我正尝试按如下方式验证 sshpass: 在 linux 环境中,我在终端中使用以下代码并正确获取文件列表: sshpass -p Password
ssh 远程网关 sshpass -p gatewaypwd -t user@gateway sshpass -p targetpwd ssh user2@target这是 origin 命令,我把它
我是 bash 的新手,目前正在编写脚本。我正在使用两台远程机器并通过 sshpass 访问它们(我知道硬编码密码不好,但我应该这样做)。因此,如果我想将内容从本地计算机复制到远程计算机,我会这样做:
Closed. This question is not reproducible or was caused by typos。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-to
我想从我的 Mac 自动进行 ssh 登录。 它确实有一个简单的解决方案: sshpass -p my_password ssh m_username@hostname 但我的问题是在我的 Mac 上
在我们的环境中,我们有几台服务器在生产中。每次我想搜索某些东西时,它可能在 4 个不同的服务器中的 1 个中。 我正在创建一个脚本来自动执行此搜索,以便我直接知道涉及哪个服务器。 我正在通过 jump
我有一个 bash 脚本需要在远程机器上启动一些进程。我已经使用 sshpass 做到了这一点命令。 我需要存储那个远程进程的 PID。 我用脚本尝试了以下操作: sshpass -p passwor
好吧,这可能听起来很荒谬,但是如何删除 sshpass 包??? 我安装的方式是这样的: $ tar -zxvf sshpass-1.05.tar.gz $ cd ./sshpass-1.05 $ .
我想从我的 Windows 运行 sshpass 命令到远程 Linux 服务器。我使用这个命令: sshpass -p 'password' ssh ldap.nextstep4it.com -l
我是一名优秀的程序员,十分优秀!