我想为默认的 Postgresql 服务器用户设置密码,postgres. 我是通过使用做到的:
sudo -u postgres psql
# \password postgres
Run Code Online (Sandbox Code Playgroud)
我想在多台机器上做这一步,所以我想创建一个bash脚本来做同样的事情。如何在 bash 中完成此操作?
我有一个命令可以产生这样的输出:
$./command1
word1 word2 word3
我想将这三个词作为参数传递给另一个命令,如下所示:
$ command2 word1 word2 word3
如何将 command1 输出作为三个不同的参数 $1 $2 $3 传递给 command2 ?
我想知道是否可以编写一个脚本来监视文件中的更改并在检测到更改时执行某些操作。
详细解释:
我正在为某些任务构建 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 做同样的事情。
我需要在 Scientific Linux (RHEL) 安装脚本中自动安装 CPAN 和一些 Perl 模块。不幸的是,就我所见,我想要的特定模块(至少其中一个)无法作为 RPM:s 找到。
所以我需要安装 CPAN,自动配置它(或使用配置文件),然后自动安装所需的模块(包括依赖项)。
这似乎不是一个非常不寻常的要求,但我还没有看到任何关于此的非常好的文档。问题是,每当第一次启动 CPAN 时,都会运行交互式配置。这可以以某种方式跳过吗?以及如何直接从命令行启动模块安装?
有没有办法递归地查找用户拥有的所有文件并将它们更改为 Gnu/Linux 中的另一个用户/组?
我认为一定有一些神奇的单线,但我的命令行巫术技能达不到那个程度:)
谢谢!
在现有的 shell 脚本中,我看到一些引用的变量包含或以减号结尾。例如:
PID=${PID-/run/unicorn.pid}
Run Code Online (Sandbox Code Playgroud)
和:
run_by_init() {
([ "${previous-}" ] && [ "${runlevel-}" ]) || [ "${runlevel-}" = S ]
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,减号是什么意思?
我的脚本中有一个 Param 块
Param (
[Parameter(Mandatory=$True)]
[string]$FileLocation,
[Parameter(Mandatory=$True)]
[string]$password = Read-Host "Type the password you would like to set all the users to" -assecurestring
)
Run Code Online (Sandbox Code Playgroud)
我可以在必填的参数字段中使用 Read-Host CmdLet 吗?如果不是,我能做些什么来确保我采用正确类型的变量类型,以便我可以将它传递给用户创建过程?
我有一个自动部署工作流,可以将代码推送到我的生产服务器并触发数据库迁移、静态文件更新等。问题是,没有开发选项--reload,gunicorn 不会自动重新加载代码更改,他们建议不要在生产中使用。相反,则指令的发送HUP信号到masterpid。问题是,我不知道如何masterpid在自动脚本中检索,尽管手动操作很容易。
如何materpid在 bash 脚本中检索gunicorn systemd 进程的值?
我需要使用 openssl 在 shell 脚本中执行一些 HTTP GET 请求。我现在用来执行此操作的行如下所示。这是解析以下格式的 XML 响应的内容。
<Result>success</Result>
<Result>failure</Result>
echo -e "GET /test HTTP/1.1\r\nHost:$(hostname)\r\n\r\n" | openssl 2>&1 s_client -quiet -connect server-url:443 | grep -o -P --color '(?<=Result\>).*(?=\</Result)'
Run Code Online (Sandbox Code Playgroud)
这有效并相应地返回字符串“成功”或“失败”。我面临的问题是该openssl命令在执行 GET 请求后不会终止,而是坐在那里等待更多输入。我相信这是由于隐式的-ign_eof,它阻止了由-quiet选项引起的自动终止。我已经尝试使用该-no_ign_eof选项,但这会导致openssl命令在 GET 请求收到响应之前终止,因此如果我使用它,我将无法获取响应的内容。
如何修改此命令,以便我可以通过 stdin 传递 GET 请求(因为我想将其放入循环中是必需的),但openssl在每次请求后都会终止该命令?
shell-scripting ×10
bash ×9
linux ×4
postgresql ×2
scripting ×2
shell ×2
centos ×1
cpan ×1
deployment ×1
gunicorn ×1
mysql ×1
openssl ×1
openvpn ×1
password ×1
perl ×1
powershell ×1
unix ×1
users ×1