Articles of bash

允许PHP使用root权限运行特定的bash脚本

我有一个PHP脚本调用这样的bash脚本: <?php $result = exec('sudo /bin/bash /var/www/my_bash_script.sh /var/www/vhosts/testsite/htdocs/'); var_dump($result); ?> 这是my_bash_script.sh的内容: #!/bin/bash svn export –force –no-auth-cache –username myusername –password mypassword http://1.2.3.4/repos/path/to/repo/ $1 2>&1 find $1 -print0 -type d | xargs -0 -n 1 -0 chown -R -v root:root 2>&1 find $1'storage' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1 find […]

为什么备份脚本与cron失败?

所以我正在做一个数据库的自动备份。 备份脚本可以正常运行,无论是手动运行还是Cron运行计划的每小时和每日备份。 但是,备份会在每周和每月的备份中失败。 我(显然)不知道,但我想我的问题是与cronconfiguration。 也许冲突,因为剧本是在午夜多次运行? 我不确定这是否可能,但如果是这样,我会很感激微调我的crontab的指示。 我的crontab: # * * * * * user-name command to be executed 00 * * * * /data/backup.sh -h #hourly 00 00 * * * /data/backup.sh -d #daily 00 00 * * 6 /data/backup.sh -w #weekly 00 00 1 * * /data/backup.sh -m #monthly 编辑:我更新了我的crontab具有交错分钟,但它仍然无法正常工作: # * * * […]

在无壳账户上获取shell?

为了安全起见,我正在pipe理一个CentOS 4.7服务器。 但有时候我需要一个用户shell来安装。 获取loginshell的最佳方式是什么? 刚才我用 sudo –u <user> bash –rcfile /home/<user>/.bash_profile 但这并不完美。 许多环境variables不是intitialized。 埃里希

Shell脚本创build后台SSH连接,如果不存在的话

有一个非常类似的问题,但我有一个额外的细节在我的情况。 基本上我使用ControlMaster来加速SSH连接。 所以我正在使用: CurrentUser=$(whoami) session=$(ps -el | grep $(id -u) |sed -e 's/sshd//g'| grep ssh) if [ "$session" = "" ] then ssh -TMNf [email protected] & fi 在这个代码之后,我有另一个命令。 ssh命令的目的仅仅是在后台运行,以便为更快的连接保持开放的套接字(如果短时间内没有发生呼叫,则由于不活动而超时和closures)。 问题是这个脚本不closures并返回给调用者。 它成为一个<defunct>进程,并且不会返回,直到我手动杀死创build的ssh会话。 我怎样才能让脚本返回到调用者,并创build的SSH在后台运行? 编辑: 我希望脚本结束后保持创build的ssh会话保持打开一个套接字与rsync命令后更快的连接。 随着一个开放的sockets,我从3-4秒转移到毫秒

如何将进程的“打开文件”限制从1024增加到10240

我有一个进程(Java程序),需要很多临时文件。 有限制设置,我们不能有超过1024个开放描述符。 如何增加“打开文件”的限制,从1024到10240的过程我可以减less的价值..不增加它。 以下的作品。 ulimit -n 899 以下不起作用 ulimit -n 1025

在shell中禁用命令replace

我有一个运行Subversion和Mercurial服务的ssh盒子。 连接到这个盒子后,脚本会validation用户是否只运行mercurial或svn相关的命令: #!/bin/bash # # Verify that the requested command is an svnserve call. # # Note that sshd stores the command requested by the client in # the variable "SSH_ORIGINAL_COMMAND". echo $SSH_ORIGINAL_COMMAND | grep -E '^hg -R' ISHG=$? if [[ $SSH_ORIGINAL_COMMAND = "svnserve -t" || $ISHG -eq 0 ]] then exec $SSH_ORIGINAL_COMMAND else echo […]

在Bash rsync脚本中出错

一个bash脚本有以下行 rsync $OPTS $BACKDIR $USER@$DEST:$DESTDIR 但其中一个选项是rsh='ssh -p2222'它抱怨说: rsync: -p2222': unknown option rsync error: syntax or usage error (code 1) at main.c(1425) [client=3.0.7] 但是当我将脚本更改为: echo rsync $OPTS $BACKDIR $USER@$DEST:$DESTDIR 并手动运行打印的命令它的工作。 请指教

用utf8编码执行一个bash脚本的问题

我有一个用utf8编码的bash脚本。 在脚本中,我使用sed命令使用§作为分隔符。 现在当我运行执行此脚本sed抱怨分隔符。 如果我使用正常字符作为ex @的分隔符,那么一切正常。 我已经在腻子中看到脚本[在putty中设置utf8],字符显示正常。 另外从locale命令显示的Linux默认字符集显示 LC_CSET=en_US.UTF-8 可能出了什么问题? 早些时候,我曾经有shell脚本windows-1252编码,这用于工作。

运行需要root的远程SSH命令的最佳方式,但不能以root身份运行

我正在努力运行以下命令: ssh someuser@lab-test "sudo /usr/local/scripts/user.sh add tstt7777 177700007 \"Test User 06\" " 长话短说我需要以远程机器的某些用户身份运行ROOT专用的user.sh脚本。 但是,我不希望某个用户能够运行任何其他命令,打开一个shell或以其他方式访问系统。 用户只需要用多个dynamic参数运行该脚本。 我已经处理了公共密钥交换,并且在sudo中添加了专用信息: #Sudo someuser ALL = NOPASSWD: /usr/local/scripts/user.sh 但是我得到以下错误: sudo: sorry, you must have a tty to run sudo 我已经在ssh中查看了“Command =”函数,但是我的理解是,这只会运行指定的命令,并且不允许参数在我的调用中指示。 有什么我失踪,使我的方法通过sudo工作? 有没有更好的方法,我没有考虑SSH或BASH?

如何找出正在使用哪个密钥loginSSH会话

我想知道login到SSH会话时使用了哪个密钥。 我想将密钥关联到本地数据库,并将电子邮件发送到与密钥对应的地址。 第一步是找出正在使用的密钥。