我在我的/ dir目录中,并保存了MediaWiki服务器的.tar.gz存档,如下所示: $ cd /public_html/w $ wget releases.wikimedia.org/mediawiki/1.24/mediawiki-1.24.1.tar.gz 但是一旦我尝试提取它: $ tar -xvzf mediawiki-1.24.1.tar.gz 它提取到一个点,然后停止,我得到一个错误: -bash: tar: cannot reach server 如何提取? 编辑: tar –version : tar (GNU tar) 1.23 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute […]
我有一个服务器,我想用作远程和本地端口转发的SSH网关。 我不希望任意命令能够被执行,只有我的脚本。 我一直在阅读如何限制贝壳容易突破,但是如果: 用户没有密码(所以他/他不能login到一个shell) SSH密码被禁用(所以一个密钥是必需的) PATH =〜/ usr / bin(仅限于此,不能执行其他地方的文件) 〜/ .ssh / authorized_keys中的条目前缀为: command="cmd_handler",no-pty,permitopen="127.0.0.1:*",permitopen="localhost:*",no-agent-forwarding,no-X11-forwarding “cmd_handler”是一个rbash shell脚本,它可以根据从stdin传递到ssh的内容执行一些不同的具体操作。 它存在于〜/ usr / bin文件夹以及它需要的可执行文件的符号链接,具体来说就是fold , head , nc , sed , ssh-keygen , tee , tr 。 〜/ usr / bin是PATH中唯一的文件夹,所以这些是唯一可用的命令。 对于需要访问的任何文件或文件夹(包括〜/ usr / bin文件夹),用户是组的所有者,具有只读访问权限。 用户不是拥有者,并且对〜/ .ssh和〜/ .ssh / authorized / keys(这是必需的)以外的文件和文件夹没有写权限。 我看不出有什么办法让系统变得脆弱,因为远程计算机可以执行的单个命令是“cmd_handler”。 而且,如果远程用户实际上可以执行另一个命令,那么这个命令并不多。 tee , sed和ssh-keygen创build了〜/ .ssh […]
我使用Supervisord运行我的Java应用程序,这需要一些环境variables的configuration。 我在/ etc / environment中设置了环境variables export MANAGER_URL="http://192.xxx.xxx.xxx:8080/manager/" export MANAGER_URL2="http://192.xxx.xxx.yyy:8081/manager/" 我的主pipe/ conf.d / myjavaapp.conf如下所示: [supervisord] nodaemon=false logfile_maxbytes=100MB logfile_backups=0 [program:java-app] command=/usr/bin/java -jar /home/pi/deploy/java-app.jar stdout_logfile_maxbytes=200MB stdout_logfile_backups=2 stderr_logfile_maxbytes=100MB stderr_logfile_backups=0 autostart=true 我知道我可以设置[java-app]部分的环境variables为: environment=MANAGER_URL="url1",MANAGER_URL2="url2" 但是这对我不起作用,因为我需要使用Puppet清单来更新variables值,Puppet清单可以更新bash环境variables,而不是更新supervisor子stream程环境variables。 我尝试使用以下命令访问shell环境variables: environment=MANAGER_URL=%(MANAGER_URL)s,MANAGER_URL2=%(MANAGER_URL2)s 但是这导致了一个错误,说明string不能被扩展。 有没有我可以读取我的supervisor.conf中的bash环境variables? 额外信息: 我正在使用raspbian Supervisord是在systemd启动时使用/etc/init.d/中的脚本运行的 Puppet代理也由Supervisor运行,因此无法重新启动Supervisor服务
我在GitHub上有一个“推后”webhook,它调用一个CGI脚本来更新一个Jekyll网站。 剧本: user@server [~/_repo]# cat cgi-bin/githook.cgi #!/bin/bash echo Content-type: text/plain echo if [ -z "$HOME" ] ; then HOME=/home/user fi GIT_REPO=$HOME/_repo PUBLIC_WWW=$HOME/public_html pushd $GIT_REPO git pull echo "$HOME/.rvm/bin/ts_jekyll build –source $GIT_REPO –destination $PUBLIC_WWW" $HOME/.rvm/bin/ts_jekyll build –source $GIT_REPO –destination $PUBLIC_WWW popd echo DONE GitHub将脚本的输出保存为: ~/_repo ~/public_html/cgi-bin Updating OLD_COMMIT_SHA..NEW_COMMIT_SHA /home/user/.rvm/bin/ts_jekyll build –source /home/user/_repo/ –destination /home/user/public_html Configuration file: […]
在我正在使用的服务器上运行一个进程,许多人都可以访问。 当我做到顶部时,我发现它占用了大约99%的CPU。 与ps aux我可以看到,有问题的命令是: python -c import pty;pty.spawn("bash") 我阅读文档,他们说 pty.spawn(argv [,master_read [,stdin_read]]) 产生一个进程,并将其控制terminal连接到当前进程的标准io。 这常常被用来挡住坚持从控制terminal读取的程序。 函数master_read和stdin_read应该是从文件描述符中读取的函数。 每次调用默认值时都会尝试读取1024个字节。 但我不明白为什么有人会这样做。 为什么有人会用shell来调用python来生成shell? 为什么它占用了这么多的CPU? 我错过了什么,或者我需要一杯咖啡吗? 基本上我想知道这个过程实际上是“做”了99%的CPU,所以我可以决定是否杀死它(记住,不只是我的箱子)。 系统pipe理员我不是。 我是那些刚刚知道足够的开发者之一。 我真的不知道如何进一步深入这个 – 任何想法? 编辑:是唯一使用这种types的命令的利用? 同样,很多人都可以访问这个框。 难道它没有一个合法的目的? 任何方式,我可以区分一个从另一个?
在工作中,我们有一个老的C程序,与霍尼韦尔的工业手持terminal一起工作。 该terminal有自己的SSH客户端连接到一个Linux的红帽6.6服务器。 一旦它被连接到Linux机箱(使用某个用户),一个C程序由bash shell用以下参数启动 export TERM=vt200 stty raw icrnl -echo $APLI_EXEC/program param1 param2 所以stream程就像=>客户端ssh – > ssh服务器 – > bash – > c程序 应用程序(或似乎)工作正常,但有时(每周1-3-5次)随机terminal停止从服务器接收数据,但应用程序接收来自它的input。 这就好像你在一个shell中写入Ctrl + S。 使用stracedebugging应用程序和ssh进程我意识到一些奇怪的事情: 应用程序strace是好的 write(1, "1", 7) = 1 但是,ssh进程的strace并不好(我认为…是的,我看到了ioctl no echo参数,但是…) rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 read(3, "\227\316\242\350\261\330)\300e\210\352\367\2VX\24\305\2474\272\371\34\273n{\323p.\211\17H\327"…, 16384) = 48 select(14, […]
我有一个bash脚本,我需要帮助: #!/bin/bash if [ -f "/suid.old" ] then find / -perm -4000 -o -perm -2000 ls > suid.old else find / -perm 4000 -o -perm -2000 ls > suid.new diff suid.old suid.new > newchanges.list fi 当我运行它给了我一个错误说:diff:suid.old:没有这样的文件或目录。 我的脚本应该说,如果suid.old不存在,那么使用find命令创build一个,或者使用find命令来执行suid.new所需的任何操作。 find它所做的任何更改并将其redirect到newchanges.list 请帮忙,
我在一个PHP脚本中做了一百万次愚蠢的事情,所以我的apache错误日志现在是12兆! debugging不是一个好的情况。 在什么情况下error.log会变成error.log.1和error.log.2.gz? 有没有一个Linux命令将手动滚动日志来获得一个新的error.log 我希望有人知道一个简单的方法来完成这一点。 如果没有,我会写一个BASH脚本。 谢谢。
我们在这里有各种各样的硬件和操作系统的机器,他们中的大多数使用代理执行的bash执行常规任务。 但是我注意到,我们拥有的一些Solaris机器没有stat util,添加它会是一个需要时间的问题(具有讽刺意味) 与此同时,我试图模仿一个macros伟的方式统计一个sisyphean任务:返回八进制文件的权限 我发现了一些在Octal-rwx中打印常规权限的旧例子,但不是用于“特殊”权限 – 粘性组,粘性用户等 我的基本方法是这样的:首先计算特殊位八进制值,然后添加常规的'rwx',但它似乎并不好 ls -lah $file | awk '{k=0;for(i=0;i<=8;i++) {if (substr($1,i+2,1)~/[s]/) k += ((substr($1,i+2,1)~/[s]/)*2^9);else k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));}if (k)printf("%0o ",k);}' ls -lah $file | awk '{k=0;for(i=0;i<=8;i++){k+=((substr($1,i+2,1)~/[rwxs]/)*2^(8-i));printf("%0o\n",k)}if(k)printf("%0o ",k);}' 任何人都可以提示我什么是一个好的解决scheme?
我想做出5个样本的平均值,并计算出一个值: 当前输出 – 我把5分钟的分辨率,但收到5个样本: $ rrdtool fetch file.rrd AVERAGE -r 300 –start 1200000000 –end 1200000300 1200000000: 1.3938888889e+00 1200000060: 4.9572222222e+00 1200000120: 7.1675000000e+00 1200000180: 1.0982500000e+01 1200000240: 7.6136111111e+00 1200000300: 7.2169444444e+00 预期结果: $ rrdtool fetch file.rrd AVERAGE -r 300 –start 1200000000 –end 1200000300 1200000000: 1.3938888889e+00 1200000300: x.xxxxxxxxxxe+00 – average 我想用rrdtool或perl,bash等其他语言来计算它。