标签: bash

linux bash中的条件代码块

几乎每个人都知道非常有用的 && 和 || 运算符,例如:

rm myf && echo "File is removed successfully" || echo "File is not removed"
Run Code Online (Sandbox Code Playgroud)

我有一个问题:如何在 && 或 || 之后放置一个命令块 不使用函数的运算符?

例如我想做:

rm myf && \
  echo "File is removed successfully" \
  echo "another command executed when rm was successful" || \
  echo "File is not removed" \
  echo "another command executed when rm was NOT successful"
Run Code Online (Sandbox Code Playgroud)

该脚本的正确语法是什么?

bash conditional

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

测试login是否是scp连接

我正在回显有关登录的各种机器统计信息,但这对于 SCP 和 SFTP 是有问题的,是否有我可以测试的 shell 变量?

linux shell bash scp

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

bash脚本-生成、发送、交互-找不到命令错误

我是我的 shell 脚本,我正在尝试删除scp命令的密码提示(如/sf/ask/32142771/#459225 中所示)这就是我到目前为止所拥有的:-

#!/usr/bin/expect
spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH
expect "password:"
send $sshPassword"\n";
interact
Run Code Online (Sandbox Code Playgroud)

在运行脚本时,我收到错误

spawn: command not found
send: command not found
interact: command not found
Run Code Online (Sandbox Code Playgroud)

我也遇到了错误expect: command not found,然后我意识到路径expect不正确并且expect根本没有安装。所以,我做了yum install expect,更正了路径,错误消失了。但仍然无法消除其他 3 个错误。

linux shell bash

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

通过脚本将您的密码传递给您的 SSH 密钥

我正在编写一个脚本,允许我一次从所有服务器检索文件。我有 SSH 密钥以便登录我的服务器。但是,我的 SSH 密钥需要密码。

我正在编写的脚本不会自动化,它只会手动运行。所以我的脚本会提示用户输入 SSH 密钥密码。

我如何在连接到每个服务器时将密码发送到 SSH 密钥。我试图避免为每台服务器输入我的密码。

我知道我可以使用“期望”,但我希望有一种简单的方法可以做到这一点。也许一些环境变量?

谢谢。

scripting ssh bash ssh-keys ssh-agent

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

遵循 bash 脚本有什么问题?

我在脚本中写了以下行,但它没有为变量 a 分配任何值

a= grep -n mark /etc/samba/smb.conf |cut -d: f1
Run Code Online (Sandbox Code Playgroud)

我方面行号,其中标记字符串存在于变量 a 中的 smb.conf 中。但是变量的值为空。可能是什么问题

scripting linux bash

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

将本地 SSH 密钥复制到远程主机(如果尚不存在)

有很多关于简单的 SSH 密钥副本的教程,但没有一个会检查密钥是否远程存在。这应该有效:

cat ~/.ssh/id_rsa.pub | ssh -p <port> <user>@<hostname> 'sh -c "if ( ! grep -q '`cat -`' ~/.ssh/authorized_keys); then cat - >>~/.ssh/authorized_keys; fi"'
Run Code Online (Sandbox Code Playgroud)

cat -grep的内部不会被插入到单个字符串中,而是被插入到 3 中,这将整个事情都搞砸了。我在 Ruby 中做了它并且它有效,但它并不理想。有 bash 专家吗?

  Net::SSH.start(<host>, <username>, :password => <password>, :port => <port>) do |ssh|
    local_public_key = `cat ~/.ssh/id_rsa.pub`.chomp
    ssh.exec! %{
      if ( ! grep -q '#{local_public_key}' ~/.ssh/authorized_keys ); then echo '#{local_public_key}' >> ~/.ssh/authorized_keys; fi
    }
Run Code Online (Sandbox Code Playgroud)

ssh bash

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

对是否使用 python 进行系统管理感到困惑

我在 bash 中做备份,我也写了一些其他的 bash 脚本。我想将其转换为 Python,因为我需要为 AI 技术学习 Python,而我总是在拖延。因为我必须经常做 sys admin 的事情,所以我想如果我用 python 做事情,那么它会擅长 python。现在我对几件事感到困惑

1)我已经看到我可以在 bash 中用 1 行代码做事情,但是在 python 中,我需要为此编写 15 行代码。例如,制作 tar 球备份。sed,awk 可以过滤文件,而在 python 中,我必须写更多行。所以我的问题是我走错了路。python 是否真的用于系统管理的东西。对我来说,这就像在 J2EE 中而不是在纯 html 中制作一个 5 页的静态网站。

2)我想知道如果bash可以做所有事情,为什么人们应该选择python。我只是在谈论系统管理员的事情。

所以我需要知道我是通过尝试使用 python 来自杀还是仅仅因为我还在学习我发现它很困难?

我只想知道 python 是否真的意味着备份、检查日志文件等。

python bash

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

`less` 中的“切割线”不起作用

我正在做:

less -S my_database_dump.sql
Run Code Online (Sandbox Code Playgroud)

为了查看行被切断的文件(即换行)。但它不起作用,行没有被换行,我需要水平滚动才能看到整行。我能做什么?

bash less

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

如何捕捉任何shell输出?

我们正在浏览器中设计一个 shell,它将流式传输 shell 输出的所有内容。标准输出,标准错误,任何东西。

然而,正如这个小例子会向你展示的那样,

git clone https://github.com/joyent/node.git >./git.out 
cat ./git.out
Run Code Online (Sandbox Code Playgroud)

大部分输出没有提供给 ./git.out。这是小视频,如果你想看看发生了什么http://screencast.com/t/7zTdPfq7Pr7

我们需要像“top”、“git”这样的命令才能工作,有什么办法可以得到它们吗?

(输出到文件仅用于说明目的,我们会将每一行输出流式传输到另一个系统,我们知道top这没有意义,但我希望我的观点对那些可以提供洞察力的人来说足够清楚。谢谢。)

shell bash

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

绝对符号链接解析密码

我正坐在 Linux shell 前。我想做类似的事情pwd,除了我想要一个绝对的答案,即我想要任何符号链接都被解析为它们的真实路径。我怎样才能做到这一点?

linux bash symlink

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

标签 统计

bash ×10

linux ×4

shell ×3

scripting ×2

ssh ×2

conditional ×1

less ×1

python ×1

scp ×1

ssh-agent ×1

ssh-keys ×1

symlink ×1