Articles of bash

SSH:通过远程SSH控制台访问本地文件(redirect本地文件内容)

我想redirect本地命令的输出(使用本地文件)到远程命令。 我知道做这样的事情是可能的: [user@local ~]$ head -c 5 /dev/urandom | ssh [email protected] "cat" …但我想知道是否有办法通过SSH控制台执行此操作,就像引用本地和远程文件的scp命令一样: [user@remote ~]$ scp test.txt remote:/new.txt 复制本地文件到远程服务器是不可取的,我只想redirect输出。 ** 两台机器都运行Linux(bash)。

我需要运行一个脚本来拉回购。 从github没有问我一个密码

我刚刚得到了一个新的服务器为我的网站,我试图创build一个文件夹中,我可以从github拉数据的主干。 这样我可以很容易地得到最新版本的网站,并将所需的文件复制到我的网站。 Git工作正常,但每次我做一个: git pull origin master 它要我input密码! 我希望能够通过脚本更新git,甚至可以通过PHP更新。 所以我可以自动更新我的服务器。 我花了几个小时试图找出如何保存密码,但我不能,这就是为什么我需要你的帮助。 我在这里遵循了几条说明: http://help.github.com/ssh-key-passphrases/ 但它没有工作。 我使用Putty从Windows到我的机器进行SSH连接。 该服务器是一个CentOS。 现在我已经按照教程的要求在〜/ .bashrc中添加了脚本,每次使用Putty连接时,我都会有一个新行: Could not open a connection to your authentication agent.

pipe理每周备份

我写了一个脚本,它将MySQL转储并上传到Amazon S3。 我已经将脚本添加到cronjob,并在午夜2点运行,并将MySQL转储上传到S3。 在上传到S3之前,我使用date和时间戳作为文件名。 我的问题是我需要在S3上pipe理7天的备份,并自动从S3删除第8天的备份文件,因为我使用date和时间戳作为文件名使每个文件都是唯一的,所以我无法出来怎么做。 而且我还必须在另一个EC2实例中恢复最新的备份。

Bash:检查文件名的唯一性,重命名或删除文件

我正在用bash在CentOS上工作,我在一个目录中有文件,如下所示: 16948.png 16948_thumb.png 16948-1_thumb.png 16949.png 16948_thumb.png 16949-1_thumb.png 16950-1.png 16950-1_thumb.png 16950-2.png 16950-2_thumb.png 我想要做以下事情: 对于文件列表中存在的每个唯一编号N : 检查是否有文件N-1.png: 如果没有,通过将N.png复制到N-1.png来创build它(总会有一个N.png) 删除N.png文件 检查是否有文件N-1_thumb.png: 如果没有,则通过将N_thumb.png复制到N-1_thumb.png来创build它(总会有一个N_thumb.png) 删除文件N_thumb.png。 不过,我的shell脚本还不够好。 这是就我所知 – 任何人都可以帮忙吗? #!/bin/sh declare -a unique_numbers for filename in ./images do // split filename at – or _ to get N, and then check // whether N is already in list of unique […]

rsync和bash命令replace

试图让脚本正确使用variables。 (下面的例子在命令行中,但是在#!/bin/bash脚本中看到完全相同的行为。 $ FLAGS='–rsh="ssh -2"' $ rsync $FLAGS foo bar rsync: -2": unknown option rsync error: syntax or usage error (code 1) at main.c(1084) 那么我加上引号。 $ rsync "$FLAGS" foo bar 现在它正常工作。 好的。 现在让我们在$FLAGSvariables中添加更多的标志。 (我只用“-r”和“-p”就可以了,同样的事情发生了,所以我不认为它与我传递的特定单个连字符标志有关。 $ FLAGS='-rptvlCR –rsh="ssh -2"' $ rsync $FLAGS foo bar rsync: -2": unknown option rsync error: syntax or usage error (code 1) […]

无法将path传递给shell脚本

我是OSX的新手,不要经常使用命令行。 我试图使用脚本来做一些自动部署,但是当我执行脚本时,它正在寻找一个目录。 我试过了: sh myscript.sh '/Users/profiles/Desktop/Development' sh myscript.sh /Users/profiles/Desktop/Development sh myscript.sh -/Users/profiles/Desktop/Development 但我一直得到“没有这样的文件或目录”。 什么是正确的方法来做到这一点? 我知道这是一个基本的问题,但我似乎无法find一个简单的答案。 我发现在谷歌上的一切都更加先进.. 更新:在脚本中,它正在寻找这样的path: DIR_DEVELOP=$@ if [ -z $DIR_DEVELOP ]; then echo "Syntax: myscript.sh <destination>" exit 1

closures脚本

我正在使用Ubuntu 11.10。 我想做一个shell脚本,closures电脑,如果没有人login一个小时。 但是,如果有人login(本地或远程SSH连接),那么我不想closures电脑.. 如果有人能让我知道我应该怎么做才能应用这个脚本,我将非常感激。 非常感谢你!

安全地执行自定义脚本部分作为sudo

在/usr/local/bin我有以下脚本sdown /usr/local/bin$ cat sdown #!/bin/bash if [ $# -lt 1 ]; then echo "no time set" else sudo shutdown -h $1 fi Permssions是788: -rwxr-xr– user user sdown 关键是如果我运行的脚本提示inputsudo密码: /usr/local/bin$ sdown 13:37 [sudo] password for user: 为了让我的生活更加美好,我想避免input密码来closures计算机。 我认为有可能我可以寻找: 允许在不提示sudo权限的情况下执行shutdown命令。 (sudoers文件左右…?) find一个去sudo权限的脚本,所以我可以把sudo放在那里。 也许第一种方法更容易,在我的私人机器上,我可以做到这一点。 但是我想知道如果我来另一种情况。 虽然理论上我想学习最佳实践。 我想知道是否最好授予我编写的特定脚本的权限,因此知道它做了什么,而不是删除完整命令的sudo密码保护(在本例中为shutdown ,这是否可能? 同样在这种情况下,我想我必须考虑一些操作脚本的代码注入的可能性。 因此,我想我应该更改所有者和组到root,只允许执行,但不授予其他用户的读写权限。 (或者只是为了更具体的解决scheme的小组。)然而,有人可能与其自己的一些交换完整的文件,因此获得sudo权利?

在bash脚本中改变目录

我有以下脚本: cd "/usr/local/bin/" /sbin/startproc ./program1 我在/usr/local/bin目录中有一个许可证,如果程序没有从那里启动,它将无法正常启动。 cd "/usr/local/bin"似乎没有什么用。

能够从git无需login密码拉或者只是运行钥匙链,这对我来说

我需要从Github一直拉,我有一个密码,但这是一个痛苦,所以我通常跑… ssh-agent bash ssh-add ~/.ssh/id_rsa <prompt and give passphrase> git pull … 这对于会话是有效的,但是即使在注销之后,我还是希望能够在下次使用PuTTY的时候保存密码。所以我安装了keychain,但是我太愚蠢了。 所以现在当我login时,我input… ssh-agent bash (Which I'm guessing causes bashrc to load and then keychain loads) git pull … 我怎么做,所以我不需要每次login时都调用“ssh-agent bash”? 我正在使用ArchLinux …