标签: bash

使用 root 命令编写 Ubuntu bash 脚本

我正在尝试在 Ubuntu 9.04 中编写一个 bash 启动脚本,它将从我的计算机中删除烦人的系统提示音:

#/bin/bash

rmmod pcspkr #remove system beep; also doesnt work without root access
Run Code Online (Sandbox Code Playgroud)

当我重新启动计算机时,它不断回来,我想运行一个启动脚本来消除这个烦恼。但是我不知道如何在 bash 脚本中以 root 身份运行,有人知道如何在 bash 脚本中以 root 身份登录吗?

scripting bash root

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

ssh 中类似 Bash 的命令替换或如何从 ssh *client* 请求东西?

在 bash(和其他 shell)中,可以使用 $() 和 ``(反引号)之类的东西将命令的结果插入到命令行中。

现在,如果您有类似的东西,但对于 ssh 会话,那就太好了。因此,您处于 ssh 会话中,需要来自您自己计算机的一些信息,并希望将其放入您所连接计算机的内部命令行中。

例如,假设您想直接访问 mysql 控制台。你可以使用这样的命令:

ssh user@example.com "mysql -u blub -pmypass"
Run Code Online (Sandbox Code Playgroud)

这可行,但问题是,您可以在 ssh shell 进程的命令行中看到密码。

为了解决这个安全问题,我想要这样的东西:

ssh user@example.com "mysql -u blub -p\$(ssh-on-client 'cat pass-file')"
Run Code Online (Sandbox Code Playgroud)

它将cat passfile在 ssh 客户端而不是服务器上执行。有这样的事情吗?你有什么其他技巧可以做到这一点吗?

更新:我感谢参考我的例子的答案,但除非他们回答真正的问题,否则我不会接受它们。也就是说,是否可以从 ssh 会话内与 ssh 客户端计算机进行通信。(我知道这可能构成一个可能的安全问题)

可能的解决方案:

  • 在客户端上有一个 ssh 服务器可以连接回。(sweimann) 问题是如何获取连接回服务器的凭据。
  • 使用 ssh 创建隧道并使用一些 netcat 脚本/telnet 在服务器上执行命令并将结果发回。
  • 使用 expect 编写 shell 脚本。(扎克·汤普森)
  • 在客户端上使用围绕 ssh 的自定义包装器观察控制台并相应地采取行动。(札幌)
  • 修补 SSH 以支持这一点。邮件列表上有类似的补丁可用
  • ssh有一个选项“SendEnv”,用于在远程计算机上设置环境变量。不过,这必须在远程 sshd 上启用。

ssh shell bash

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

我的 bash 数组有什么问题?

谁能告诉我为什么这个 bash 脚本在我将它剪切并粘贴到终端时会起作用,但在使用 $ sudo sh server_prep.sh 启动时会抛出“server_prep.sh: 7: Syntax error:”(“unexpected”?

#!/bin/sh

#Packages
apt-get -y install ssh libsqlite3-dev ruby-full mercurial

#Gems
required_gems = ( rake rails sqlite3-ruby )

#Set up directories
[ ! -d /var/www ] && mkdir /var/www
[ ! -d /var/www/apps ] && mkdir /var/www/apps

#install gems manually
if ! which gem >/dev/null; then
    wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
    tar xvfz rubygems-1.3.5.tgz
    ruby rubygems-1.3.5/setup.rb
    ln -s /usr/bin/gem1.8 /usr/bin/gem
    gem update --system

    #Tidy Up
    rm -rf rubygems-1.3.5.tgz rubygems-1.3.5
fi

#Install required gems …
Run Code Online (Sandbox Code Playgroud)

bash

1
推荐指数
2
解决办法
381
查看次数

Ubuntu 中的 Bash 管道答案

在 bash 脚本中,我想知道如何输入答案,例如:

ssh -l username -i /home/ubuntu/.ssh/id host.com < yes
Run Code Online (Sandbox Code Playgroud)

ssh 连接会询问我是否要继续连接,并且我想自动输入答案 yes 并输入我,但是我的脚本“< yes”似乎不起作用。有谁知道如何在 Ubuntu 下的 bash 中正确键入和管道响应“是”?

ubuntu bash pipe

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

bash 脚本 - 从第 N 行打印到 EOF

我希望能够打印 bash 中的行数:行号(从顶部开始计算)-> 文件结尾

似乎 tail 只会从底部开始计算行数。

有谁知道如何做到这一点?谢谢。

我试过以下

# Where $1 is the file I'm reading in

# Get line number of error:
LINENUM=$( grep -n "$LAST_ERROR_DATE" $1 | egrep $LOG_THRESHOLD | grep $LAST_HOUR: | sed 's/:/ /g' | awk '{print $1}' | head -n 1 )

echo $LINENUM

# This returns 995

# Print everything from linenumber downwards
MESSAGE=$( awk 'NR >= $LINENUM' $1 )
Run Code Online (Sandbox Code Playgroud)

当我手动弹出 995 到 awk 而不是 $LINENUM 时,这有效,它似乎没有读取我的 bash 变量。有任何想法吗?

bash awk sed unix-shell

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

来自 Bash 脚本的 GCC 编译结果

嗨,我对 bash shell 脚本不是很熟练,我正在使用由 bash 脚本执行的 gcc 进行一些编译,我怎么知道(检查)编译是否成功?任何例子?

scripting bash gcc g++

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

bash 中的选择性备份脚本

一年来,我一直在使用这个简单的命令(这就是我所能做的:)从我在 NAS 服务器中的用户数据备份整个树。

cp -r /STORAGE /BACKUP-STORAGE/YYYY-MM-DD
Run Code Online (Sandbox Code Playgroud)

不幸的是,经过一年的服务。我的用户开始用大量照片和剪贴画(jpg、gif、bmp)填充空间,这开始使我的备份过程变慢。空间也是一个大问题。现在,我不再有足够的空间来存放为期一周的每日备份集。

我想我想从备份所有内容更改为仅备份非图像数据。如何从备份中排除 jpg、gif 和 bmp?使用 DOS XCOPY 命令很容易,但我真的不知道如何在 bash 中做到这一点。

谢谢

backup bash command-line-interface bourne-shell unix-shell

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

当我输入一个不存在的命令时,我的机器在返回 shell 提示符之前停止了大约 5 秒钟

当我输入一个不存在的命令时,它会显示“找不到命令”。然后等待大约 5 秒钟,然后再次显示提示。

我该如何解决?

我正在使用 Fedora。

linux bash fedora

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

删除除一个目录以外的所有内容

我有一个/tmp/test目录。在其中,我混合了文件和目录。这些目录之一是/tmp/test/to_be_kept. 现在我想知道如何删除所有文件和目录/tmp/test/to_be_kept以及其中的所有内容?谢谢

bash command-line-interface

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

如果我 apt-get install ksh 是替换默认 shell 还是仅将其安装为解释器?

我收到错误:bash: ./fw_utils: /bin/ksh: bad interpreter: No such file or directory

如果我 apt-get install ksh 是替换默认显示还是仅将其安装为解释器?

如果它确实将其安装为默认值,我该如何将默认值切换回 bash?

shell bash apt

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

标签 统计

bash ×10

command-line-interface ×2

scripting ×2

shell ×2

unix-shell ×2

apt ×1

awk ×1

backup ×1

bourne-shell ×1

fedora ×1

g++ ×1

gcc ×1

linux ×1

pipe ×1

root ×1

sed ×1

ssh ×1

ubuntu ×1