标签: bash

复制大量文件时出现“参数列表太长”错误

我正在使用以下命令:

\cp -uf /home/ftpuser1/public_html/ftparea/*.jpg /home/ftpuser2/public_html/ftparea/
Run Code Online (Sandbox Code Playgroud)

我收到错误:

-bash: /bin/cp: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我也试过:

ls /home/ftpuser1/public_html/ftparea/*.jpg | xargs -I {} cp -uf {} /home/ftpuser2/public_html/ftparea/
Run Code Online (Sandbox Code Playgroud)

还是有 -bash: /bin/ls: 参数列表太长

有任何想法吗?

linux bash unix-shell

12
推荐指数
2
解决办法
4万
查看次数

在 shell 脚本中使用 su

我正在自动化部署过程,我希望能够在我的机器上调用一个 .sh 文件,让它完成我的构建并将 .zip 上传到服务器,然后在服务器上做一些事情。我需要做的一件事要求我是 root。所以,我想做的是:

ssh user@172.1.1.101 <<END_SCRIPT
su - 
#password... somehow...
#stop jboss
service server_instance stop
#a bunch of stuff here
#all done!
exit
END_SCRIPT
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

su ssh bash sudo

12
推荐指数
2
解决办法
4万
查看次数

用于存储键入的命令并清理行的键盘快捷键

您知道这种情况:您正在输入一条长命令(例如提交消息)的一半,并意识到您忘记执行一些无法添加的先决条件命令&&。通常,当我遇到这种情况时,我会选择我用鼠标键入的内容,将其复制到剪贴板,按 Ctrl-U 清除该行,运行我的先决条件命令并从剪贴板粘贴。但也许有更好的方法,最好不需要使用鼠标?我正在寻找 bash 和/或 zsh 的解决方案。

bash command-line-interface zsh

12
推荐指数
3
解决办法
1211
查看次数

不使用root密码通过命令行连接MySQL?

我正在为某些任务构建 Bash 脚本。其中一项任务是从同一个 bash 脚本中创建一个 MySQL 数据库。我现在正在做的是创建两个变量:一个用于存储用户名,另一个用于存储密码。这是我的脚本的相关部分:

MYSQL_USER=root
MYSQL_PASS=mypass_goes_here

touch /tmp/$PROY.sql && echo "CREATE DATABASE $DB_NAME;" > /tmp/script.sql
mysql --user=$MYSQL_USER --password="$MYSQL_PASS" < /tmp/script.sql
rm -rf /tmp/script.sql
Run Code Online (Sandbox Code Playgroud)

但是总是收到一个错误,说没有密码的用户 root 访问被拒绝,我做错了什么?我需要为 PostgreSQL 做同样的事情。

mysql postgresql linux bash shell-scripting

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

如何轻松地从 Linux 中的标准输入流转换 HTML 特殊实体?

CentOS

有没有一种简单的方法可以从数据流中转换 HTML 特殊实体?我将数据传递给 bash 脚本,有时该数据包含特殊实体。例如:

“测试”& 测试 $ 测试!测试@#$%^& *

我不确定为什么有些字符显示正常而其他字符显示不正常,但不幸的是,我无法控制传入的数据。

我想我可以在这里使用 SED,但这似乎很麻烦,并且可能容易出现误报。是否有我可以通过管道传输的 Linux 命令专门用于解码此类数据?

scripting linux bash html sed

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

是否可以从 Linux 更改 BIOS 设置?

我正在尝试编写一个脚本来在大量机器上启用 IPMI,而无需将 KVM 一一连接到它们。是否可以从 Linux 更改 BIOS 设置?操作系统是SL6。

我知道每台机器都可能需要重新通电,但我当然可以通过编程来做到这一点。

scripting linux bash bios

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

来自 bash 的 smtp.gmail.com 给出“证书错误:无法识别对等方的证书颁发者。”

如果出现问题,我需要我的脚本给管理员发送电子邮件,而该公司只使用 Gmail。按照一些帖子说明,我能够使用 .mailrc 文件设置 mailx。首先是 nss-config-dir 的错误,我通过从 firefox 目录复制一些 .db 文件解决了这个问题。到 ./certs 并在 mailrc 中瞄准它。发了一封邮件。

但是,出现了上面的错误。奇迹般地,.db 中有一个 Google 证书。它出现了这个命令:

~]$ certutil -L -d certs

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

GeoTrust SSL CA                                              ,,
VeriSign Class 3 Secure Server CA - G3                       ,,
Microsoft Internet Authority                                 ,,
VeriSign Class 3 Extended Validation SSL CA                  ,,
Akamai Subordinate CA 3                                      ,,
MSIT Machine Auth CA 2                                       ,,
Google Internet Authority                                    ,,
Run Code Online (Sandbox Code Playgroud)

最有可能的是,它可以被忽略,因为邮件无论如何都可以工作。最后,在拉了一些头发和许多谷歌之后,我找到了如何摆脱烦恼。

首先,将现有证书导出到 ASSCII 文件:

~]$ certutil -L -n 'Google Internet Authority' …
Run Code Online (Sandbox Code Playgroud)

ssl bash gmail

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

管道 stderr 和 stdout 到不同的命令(不仅仅是文件)

我正在为 ldap 制作备份脚本。我希望错误转到 /var/log 中的文件,并将输出转到备份文件夹中的另一个文件。目前我正在重定向到一个临时文件,然后将临时文件发送到日志。不过,我宁愿将其作为 1 个班轮使用...

/usr/bin/ldapsearch -x -LLL -b "dc=contoso,dc=com" "(objectclass=*)" -h ldap.server -v 2>>/tmp/ldaptmp.err |
  gzip -c > /mnt/backups/ldap/`date +\%Y\%m\%d`.ldif.gz || 
  logger -t ldapbackup -p local6.err error exit $?

cat /tmp/ldaptmp.err | grep -v "ldap_initialize( ldap://ldap.server )" | 
  grep -v "filter: (objectclass=\*)" |
  grep -v "requesting: All userApplication attributes" >$ERR_LOG
rm -f /tmp/ldaptmp.err
Run Code Online (Sandbox Code Playgroud)

关于如何将 stderr 和 stdout 重定向到不同管道以将此命令压缩为 1 行的任何想法?或者,还有更好的方法?

linux bash

12
推荐指数
2
解决办法
7408
查看次数

当没有答案时,如何让 dig +short 返回一些东西?

的行为dig +short是在运行不返回任何答案的查询时不返回任何内容(空)(与超时无关,只是一个明确的空答案)。

单独运行查询是可以的,但是结合一个-f参数运行一批查询时,就惨了!

dig +short -f queries.txt

queries.txt: A somedomain.com TXT otherdomain.com A somedomain.com

现在,如果 DNS 服务器没有为 TXT otherdomain.com 返回任何内容(即 ANSWER: 0),而不是超时或其他内容,那么上述 dig 命令的输出将类似于:

dig +short -f queries.txt 1.2.3.4 1.2.3.4

即,只有两行。不适用于“粘贴”和其他类似命令。您不能再合并 query.txt 的输出和 dig 的生产输出。

这里可以做任何优雅的事情吗?

domain-name-system bash

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

如何杀死除bash之外的所有python进程

如何从 bash 中杀死除一个 python 脚本之外的所有 python 进程。(我知道它的名字,但它的 pid 有时可以改变)。

我需要一种pkill -f "python"但不包括python特定脚本。

请指教。

bash

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