$ ashbook find name=killa.*
$ ashbook find name=.*smurf86
LeFroid said:Heres a few simple scripts I wrote.
Heres a basic script to play any video in your ~/Videos dir
play.py
Code:#!/usr/bin/env python import sys import os # what to play the video with player = "vlc" # arguments, ex 'play "myvid.avi"' video = sys.argv[1] # home dir home = os.path.expanduser('~') # combine strings execStr = player+" "+home+"/Videos/"+video # run execStr os.system(execStr)
#!/bin/sh
SRCBASE=${SRCBASE:-/usr/src}
[ -d "${DESTDIR}" -a -d "${SRCBASE}" ] || exit $?
export UNAME_s=$(uname -s)
export UNAME_m=${UNAME_m:-$(uname -m)}
export UNAME_p=${UNAME_p:-$(uname -p)}
REVISION=$(cd "${SRCBASE}/sys/conf" && grep REVISION= newvers.sh | cut -f2 -d'"')
BRANCH=$(cd "${SRCBASE}/sys/conf" && grep BRANCH= newvers.sh | head -n1 | cut -f2 -d'"')
export UNAME_r="$REVISION-$BRANCH"
export OSVERSION=$(awk '/\#define.*__FreeBSD_version/ { print $3 }' "$SRCBASE/sys/sys/param.h")
export UNAME_v="$UNAME_s $UNAME_r #0: $(date -v1m -v+1y) root@$HOSTNAME:$SRCBASE/sys/$UNAME_p/compile/GENERIC"
cp -L /etc/resolv.conf "$DESTDIR/etc/resolv.conf"
[ -c "$DESTDIR/dev/zero" ] || mount -t devfs dev "$DESTDIR/dev"
d=$DESTDIR
s=$SRCDIR
unset DESTDIR SRCBASE
chroot "$d" /bin/sh
# XXX: exiting immediately and trying to unmount $DESTDIR/dev doesn't always work... hmmm...
sleep 10
umount -f "$DESTDIR/dev"
#!/bin/sh
#
# A simple script for creating memory disks.
#
# Some of the logic was adapted from release/scripts/make-memstick.sh -- e.g.
# make_usb (thanks kensmith@!)
#
TEN_MB_IN_1K=$((10 * 1024))
# Reporting functions. Nothing much to see here...
die() {
echo >&2 "${0##*/}: ERROR: $*"
exit 1
}
info() {
echo "${0##*/}: INFO: $*"
}
# Usage
usage() {
echo "usage: ${0##*/} [-f mtree-file] input-directory image"
exit 1
}
# Clean up all consumed memory disks.
cleanup() {
set +e
trap : 0 1 2 15
if [ "x${md_unit}" != x ]; then
info "cleaning up memory disk"
mdconfig -d -u ${md_unit}
fi
rm -f "${tempfile}"
}
# Create a complete USB image.
#
# 1 - Input directory.
# 2 - Output image (for USB stick).
make_usb() {
# In order to use mdconfig(1) you should be root -- I realize this is
# overly conservative, but I'd rather not make this too complicated...
if [ "x$(id -ru)" != x0 ] ; then
die "you must be root when executing make_usb"
fi
[ $# -eq 2 ] || usage
[ -d "$1" ] || die "input directory - $1 - doesn't exist"
set -e
tempfile=$(mktemp /tmp/usb.XXXXXXXX)
trap "[ \$? -ne 0 ] && rm -f '$output_image'; cleanup" 0 1 2 15
in_dir=$1
output_image=$2
#sed -e '/^vfs.root.mountfrom.*/d' -i "" "$in_dir/boot/loader.conf"
#echo 'vfs.root.mountfrom="ufs:/dev/da0a"' >> "$in_dir/boot/loader.conf"
#makefs -o -O,1,-b,4096,-f,512,-o,space${inode:+,-i,${inode}} -f 1% \
# Don't want to append to the existing image; this is what happens by
# default with mdconfig(1), because we used -t vnode.
rm -f "$output_image"
makefs_args="${tempfile} ${in_dir}"
if [ "x$mtreefile" != x ]; then
makefs_args="-x -F $mtreefile $makefs_args"
fi
makefs -f 1% $makefs_args
#
# Calculate the needed file size for the mounted image.
#
# The calculation is done as shown for the following reason (as verbatim
# from: .../release/scripts/make_memstick.sh):
#
# Use $BLOCKSIZE for transfers to improve efficiency. When
# calculating how many blocks to transfer "+ 2" is to account for
# truncation in the division and to provide space for the label.
#
block_count=$(( $(stat -f '%z' "$tempfile") / $TEN_MB_IN_1K + 2))
# Create the backing file.
dd if=/dev/zero of=$output_image bs=$TEN_MB_IN_1K count=$block_count
# Create a new memory disk.
md_unit=$(mdconfig -a -t vnode -f "$output_image")
# Partition and label the sucker. Add appropriate bootloader bits to
# the partition table and slices.
fdisk -BIq /dev/${md_unit}
bsdlabel -Bw /dev/${md_unit}
# Sync the contents on the temporary file to the memory disk.
dd "if=$tempfile" of=/dev/${md_unit}a bs=$TEN_MB_IN_1K conv=sync
}
# Parse available options and commands.
mtreefile=
while getopts "f:" option; do
case "$option" in
f)
if [ ! -f "$OPTARG" ] ; then
die "mtree file specified - $OPTARG - doesn't exist or isn't a regular file!"
fi
mtreefile=$OPTARG
;;
*)
usage
;;
esac
done
shift $(( OPTIND - 1 ))
make_usb $@
#!/bin/sh
#
# A first-time boot rc script which goes in, labels the disks appropriate to
# the config files, newfs's the sucker, then mounts, unwraps the payload, and
# does a basic sanity check to ensure that the system is bootable and
# functional.
#
DESTDIR=${DESTDIR:-/mnt}
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PKG_PATH=/packages
debug() {
echo "${0##*/}: DEBUG: $@"
}
info() {
echo "${0##*/}: INFO: $@"
}
# functions adlibbed from install/stage/etc/rc.
clear_swap() {
# This always errors out when wiping the entire device; I don't care if
# it does or not...
info "Creating swap partition"
dd if=/dev/zero of=/dev/$1s1b bs=1m 2>/dev/null || :
swapon /dev/$1s1b
}
cleanup_mountpoints() {
trap : 0 1 2 15
set +e
mounted_destdir=$(mount | awk '$3 != "/" && $3 !~ /^\/dev/ { print $1 }')
until [ "x${mounted_destdir:-}" = x ]; do
umount -f ${mounted_destdir}
mounted_destdir=$(mount | awk '$3 != "/" && $3 !~ /^\/dev/ { print $1 }')
sleep 1
done
[ "x${md_unit}" != x ] && mdconfig -d -u ${md_unit}
}
# Do all `post-install' configuration actions, like generate /etc/fstab, etc.
#
# 1 - Disk
configure_system() {
generate_fstab $1
clear_swap $1
}
# Clear all of the data off of a disk.
#
# 1 - Disk
format_disk() {
fdisk -BIq $1 2>/dev/null >/dev/null
}
# Generate /etc/fstab based on the filesystems mounted under ${DESTDIR}.
#
# 1 - Disk
generate_fstab() {
old_IFS=$IFS
IFS="
"
echo "/dev/$1s1b none swap sw 0 0" > "${DESTDIR}/etc/fstab"
for i in $(mount); do
i=$(echo "$i" | sed -e 's# on##g' -e 's#(.*)$##g' -e 's#mnt/*##g')
case "$i" in
/dev/$1*)
echo "$i ufs rw 1 1" >> "${DESTDIR}/etc/fstab"
;;
esac
done
IFS=$old_IFS
}
# Is the disk real?
#
# 1 - Disk
isa_real_disk() {
[ -c /dev/$1 ]
}
# Label a disk according to a seemingly logical scheme
label_disk() {
disklabel -w -r -B /dev/${1}s1 auto
tmp_label=$(mktemp /tmp/disklabel.XXXXXX)
cat <<EOF > $tmp_label
a: 4G 16 4.2BSD 2048 16384
b: $(( $(sysctl -n hw.physmem) / 1024 / 1024 ))M * swap
d: 4G * 4.2BSD 2048 16384
e: 8G * 4.2BSD 2048 16384
f: * * 4.2BSD 8192 65536
EOF
disklabel -R /dev/${1}s1 $tmp_label
rm -f $tmp_label
}
mount_disk() {
for i in 1a: 1d:usr 1e:var 1f:usr/home; do
partition="/dev/${1}s$(echo "$i" | cut -d: -f1)"
mountpoint="${DESTDIR}/$(echo "$i" | cut -d: -f2)"
debug "Mounting ${partition} on $mountpoint"
test -d "$mountpoint" || mkdir -p "$mountpoint"
mount $partition "$mountpoint"
done
}
newfs_disk() {
for i in /dev/${1}s1[adef]; do
newfs -O2 -m 8 -o time $i >/dev/null
done
}
stage_install() {
info "Installing base"
# Copy over the contents of the media to $DESTDIR , skipping over a
# select set of directories (but not /packages because pkg_add would
# fold in on itself if it's not present based on the value of
# getcwd(3), as pkg_add(1) -C chroots into $DESTDIR, and chroot(2)
# does not actually modify the value of the current directory returned
# by getcwd(3)).
#
# XXX (garrcoop): 1. --exclude for tar(1) should work in this regard,
# but it doesn't 100% in this case (for some reason). 2. -C for cpf
# should work as well, but doesn't.
(cd / ; tar -cpf - $(ls -d * | grep -E -v 'dist|mnt') | tar xpf - -C "$DESTDIR")
# Override the USB copies of files with their dist/ bretheren.
(cd /dist ; tar -cpf - . | tar xpf - -C "$DESTDIR")
sed -e '/^vfs.root.mountfrom/d' -i "" "$DESTDIR/boot/loader.conf"
if [ -d "$PKG_PATH" ] ; then
info "Installing packages"
mount -t devfs dev $DESTDIR/dev
mountpoints="$DESTDIR/dev $mountpoints"
# XXX (garrcoop): pkg_add(1) barfs with exit code 1 even when
# -F and -f are specified; this needs to be fixed.
(find "$PKG_PATH" -type f | xargs -n 4 pkg_add -C "$DESTDIR" -Ff || :) 2>/dev/null >/dev/null
rm -Rf "$DESTDIR/$PKG_PATH"
info "Packages installed"
fi
info "Install complete"
}
wipe_disk() {
info "Wiping disk $1"
dd if=/dev/zero of=/dev/$1 bs=1m count=1 2>/dev/null || :
}
set -e
md_unit=$(mdconfig -a -t malloc -s $(( 16 * 1024 * 1024 )) )
newfs /dev/$md_unit >/dev/null
mount -t ufs /dev/$md_unit /tmp
trap cleanup_mountpoints 0 1 2 15
# Wait for the devices to be detected.
i=0
while [ $i -lt 15 ] && ! isa_real_disk "$1" ; do
# Avoid RAIDs, memory disks, and SCSI disks.
set -- $(sysctl -n kern.disks | awk '{ for (i=1; i <= NF; i++) { if ($i !~ /ar|da|md|mf[0-9]+/) { disks = disks " " $i } } } END { print disks }')
sleep 2
: $(( i += 1 ))
done
if [ "x$1" = x ] ; then
echo "${0##*/}: ERROR: didn't find a configurable harddisk."
exit 1
else
for step in wipe format label newfs mount; do
debug "Calling ${step}_disk on $1"
eval "${step}_disk $1"
done
stage_install
configure_system $1
cleanup_mountpoints
read -p "Remove the CD / USB media and press Enter to continue " j
init 6
fi
ckester said:One of the first lessons I learned when I began my software career many years ago is to never add features that aren't in the spec -- at least, not unless you get the client's agreement and understanding that the project might be delayed or have additional bugs as a result.
Even if it's an in-house job.
playd_rnd() {
# arg1 Max value
a=$(dd if=/dev/random of=/dev/stdout bs=1 count=4 2>/dev/null | od -D -An)
b=$(echo "$1 / 4294967296 * $a" | bc -l | sed 's/\..*$//')
if [ "$b" ]; then
echo $b
else
echo 0
fi
}
#!/usr/bin/perl
use DBI;
my $db_name = 'mysql';
# user from db
my $db_user = 'root';
my $db_pass = '';
my $db_type = 'mysql';
my $db_host = 'localhost';
my $dbh = DBI->connect(
"DBI:$db_type:database=$db_name;host=$db_host",
$db_user, $db_pass,
{
RaiseError => 1,
PrintError => 1
}
) || die $DBI::errstr;
my $sth = $dbh->prepare( 'select Db from db' );
$sth->execute();
my $loop_data;
push @{$loop_data}, $_ while $_ = $sth->fetchrow_hashref();
$sth->finish();
$dbh->disconnect();
foreach my $ii ( @{$loop_data} ) {
my $db_name = $ii->{Db};
my $dbh = DBI->connect(
"DBI:$db_type:database=$db_name;host=$db_host",
$db_user,
$db_pass
);
my $loop_data2;
eval {
my $sth = $dbh->prepare('show tables');
$sth->execute();
while ( my @row = $sth->fetchrow_array ) {
die "bad table name: $row[0]" unless $row[0] =~ /^[w_]+$/;
push @{$loop_data2}, $row[0];
}
};
next if ($@);
foreach $_ ( @{$loop_data2} ) {
$dbh->do( qq{REPAIR TABLE $_ } );
}
$dbh->disconnect();
}
#!/bin/sh
# Written by Alt 2010. Beer-ware license xD
M_LOGIN="root"
M_PASS="YoUrPaSsWoRd"
DBS=`echo 'show databases;' | /usr/local/bin/mysql -p$M_PASS -u$M_LOGIN | /usr/bin/grep -v Database | /usr/bin/grep -v information_schema | /usr/bin/xargs echo `
for DB in $DBS; do
echo "DB $DB"
TBLS=`echo 'show tables;' | /usr/local/bin/mysql -p$M_PASS -u$M_LOGIN $DB | /usr/bin/grep -v Tables | /usr/bin/xargs echo `
for TBL in $TBLS; do
echo -n " Tbl $TBL .. "
echo "repair table $TBL quick;" | /usr/local/bin/mysql -p$M_PASS -u$M_LOGIN $DB | /usr/bin/grep -v Msg_type
done
done
/usr/local/bin/mysqladmin -p$M_PASS -u$M_LOGIN flush-tables
vermaden said:@killasmurf86
You should accomplish the same with that one-liner:
[CMD=""]% expr ${RANDOM} % 10 + 1[/CMD]
... where 10 is maximum, You may generalize that into:
[CMD=""]% expr ${RANDOM} % ${MAX} + 1[/CMD]
It will not work in sh(1). Use jot(1), e.g.vermaden said:You should accomplish the same with that one-liner:
[CMD=""]% expr ${RANDOM} % 10 + 1[/CMD]
$ jot -r 1 0 $(((1 << (8 * [highlight]4[/highlight])) - 1))
$ playd_rnd() { jot -r 1 0 $1; }
#!/usr/bin/env bash
clear
# this can be temperature or something else
# Total line number is 33 !
temp_array=( "" 32 31 31 30 29 28 28 35 37 38 38 39 40 40 41 48 45 44 43 42 40 39 36 )
# THE h line len=32 ! so i should get diffz between start and stop line ! (negatively)
size="${#temp_array[@]}"
### "Y"
for ((l=1 ; l < $size ; l++ ));do
let "l2=l+$l"
for ((t=1 ; t <= ${temp_array[$l]} ;t++));do
let "temp=50-${temp_array[$l]}"
echo -en "\033[${temp};"$l2"f\033[1;31m *\r \033[0;0m"
echo "${temp_array[$l]}"
done
done
echo -e "\033[0;0m"
### "X"
for ((k=1 ; k < 32 ; k++ ));do
echo -en "\033[32;$kf\033[32;"$k"d\033[1;31m |\033[0m"
done
echo
#!/usr/local/bin/tclsh8.5
#
# GrabPhotos.tcl -- Photo memory card helper
# Sébastien Santoro aka Dereckson <dereckson@gmail.com>
#
# # # # # # # # # # # # #
# General configuration #
# # # # # # # # # # # # #
# Where to copy the pics?
set GrabPhotos(targetdir) "~/docs/pics/albums"
# Where are the pics (e.g. your memory card location)?
set GrabPhotos(sourcedir) "/mount/flashmedia"
# On the memory card, where are the pics ?
# set GrabPhotos(picsdir) "" to disable DCIM-like directories lookup
set GrabPhotos(picsdir) DCIM
# If 1, work with any subdirectory from the source
set GrabPhotos(recursive) 1
# Prints an header with credits
set GrabPhotos(printcredits) 0
# verbose prints script action, debug extra details
set GrabPhotos(verbose) 1
set GrabPhotos(debug) 0
# When debug is 1, that also implies verbose to 1, discarding your verbose value
# To disable this behavior, comment the following line (putting a # in front of it) :
if $GrabPhotos(debug) {set GrabPhotos(verbose) 1}
# # # # # # # # # # # # # # # # # # # # #
# Specific configuration :: resize code #
# # # # # # # # # # # # # # # # # # # # #
#This part is if you want to create resised versions with ImageMagick
set GrabPhotos(enableresize) 1
set GrabPhotos(resizeddir) "~/docs/pics/albums/_resized"
set GrabPhotos(sizes) "75x56 800x600 1600x1200"
set GrabPhotos(jpegquality) 80
set GrabPhotos(convert) "/usr/local/bin/convert"
set GrabPhotos(mogrify) "/usr/local/bin/mogrify"
# # # # # # # # # # # # #
# General configuration #
# # # # # # # # # # # # #
# Now, if you just want a copy or a resizing, it's operate as is. Just run it.
# The following code is fully customisable and commented to help you to
# adapt it for your needs.
# # # # # # # # # # # #
# File types handlers #
# # # # # # # # # # # #
# By default, this script handles .jpg files.
# You can add handlers, just creating a proc named handler_ext,
# where ext is the file lowercase extension.
# The file argument is the complete path to the file
# This handlers copy .jpg files to $GrabPhotos(targetdir)/YYYY/YYYY-MM folders
# and then create thumbnails version
proc handler_jpg {file} {
global GrabPhotos
#Gets created time of the file, and then YYYY and MM values
set ctime [get_created_time $file]
set YYYY [clock format $ctime -format "%Y"]
set MM [clock format $ctime -format "%m"]
#Gets the target directory. Creates it if needed
set targetdir "$GrabPhotos(targetdir)/$YYYY/$YYYY-$MM"
if $GrabPhotos(debug) {puts "\nTarget: $targetdir"}
create_directory $targetdir
#Copies file if it doesn't exist
copy_file $file $targetdir
#Calls resize code if enabled
if $GrabPhotos(enableresize) {resize $file "$YYYY/$YYYY-$MM"}
}
# # # # # # # # #
# Plugs in code #
# # # # # # # # #
proc resize {file subdir} {
global GrabPhotos
if $GrabPhotos(verbose) {puts "Generating resized version from $file"}
foreach size $GrabPhotos(sizes) {
set targetdir "$GrabPhotos(resizeddir)/$subdir/$size"
create_directory $targetdir
set targetfile "$targetdir/[get_filename $file]"
if ![file exists $targetfile] {
#copy_file $file $targetdir
exec -- $GrabPhotos(convert) [file nativename $file] -resize $size -quality $GrabPhotos(jpegquality) [file nativename $targetfile]
}
}
}
# # # # # # # # # # #
# Helper procedures #
# # # # # # # # # # #
proc copy_file {file targetdir} {
global GrabPhotos
set fileExists [file exists "$targetdir/[get_filename $file]"]
if $GrabPhotos(debug) {
#DEBUG print
puts -nonewline "Copying $file to $targetdir"
if $fileExists {
puts " \[skipped, already exists\]"
} {
file copy $file $targetdir
puts " \[ok\]"
}
} elseif !$fileExists {
file copy $file $targetdir
}
}
proc create_directory {dir} {
global GrabPhotos
if ![file exists $dir] {
if $GrabPhotos(verbose) {puts "Creating $dir"}
file mkdir $dir
}
}
proc get_created_time {file} {
file stat $file test
return $test(ctime)
}
proc get_filename {file} {
lindex [file split $file] end
}
proc parse {directory} {
global GrabPhotos
if $GrabPhotos(verbose) {puts "Parsing $directory"}
#Get files in this directory
foreach file [glob -nocomplain -directory $directory *] {
#Another directory, parses it if recursive mode enabled
if {[file isdirectory $file] && $GrabPhotos(recursive)} {
parse $file
} {
#A regular file, gets the extension and check if we've an handler
set ext [string tolower [string range [file extension $file] 1 end]]
set handlerproc [info procs handler_$ext]
if {$handlerproc != ""} {
#An handler exists
if $GrabPhotos(debug) {puts "Calling $handlerproc $file"}
$handlerproc $file
} {
#File unhandled by a proc
if $GrabPhotos(verbose) {puts "Ignored file: $file"}
}
}
}
}
proc print_credits {} {
puts "___________________________________________________________________"
puts "GrabPhotos 0.1 :: the photo memory card helper"
puts "___________________________________________________________________"
}
proc print_usage {} {
puts "Usage: GrabPhotos <source>"
}
# # # # # # # # # #
# Procedural code #
# # # # # # # # # #
if {$argc == 0} {
if {![info exists GrabPhotos(sourcedir)]} {
print_credits
print_usage
exit
}
} {
# Gets sourcedir from argument
set GrabPhotos(sourcedir) [lindex $argv 0]
}
if {![file isdirectory $GrabPhotos(sourcedir)]} {
puts stderr "Fatal error: $GrabPhotos(sourcedir) isn't a directory."
exit
}
if $GrabPhotos(printcredits) {
print_credits
}
# Go to $GrabPhotos(picsdir) (by default DCIM) directory, if it exists
# If not, we stay in current $GrabPhotos(sourcedir) (by default the script argument)
if [file isdirectory "$GrabPhotos(sourcedir)/$GrabPhotos(picsdir)"] {
set GrabPhotos(sourcedir) "$GrabPhotos(sourcedir)/$GrabPhotos(picsdir)"
}
parse $GrabPhotos(sourcedir)
set echo_style = 'both'
set title = '$USER@$HOST:ar $cwd'
switch ($TERM)
case {dtterm,rxvt,screen,xterm}*:
alias cwdcmd 'echo -n "\e]2;'$title'\a"'
breaksw
case sun*:
alias cwdcmd 'echo -n "\e]l'$title'\e\\"'
breaksw
case vt[24]20*:
alias cwdcmd 'echo -n "\e]0;'$title'\a\e\\"'
breaksw
default:
alias cwdcmd 'unalias cwdcmd'
unset title
endsw
cwdcmd
#!/usr/bin/perl
# @author Dmitriy Shilenko <q7u5@ukr.net>
# ProFTP
use warnings;
use strict;
use CGI;
use DBI;
use Image::Magick;
use CGI::Carp qw(fatalsToBrowser); # used only for tests
# use Data::Dumper;
# $CGI::POST_MAX = 100000000 # maximum file upload size for safety
my $form = new CGI;
# print $form->header; #Print HTML header. this is mandatory
my $p;
%{$p} = $form->Vars;
if (!$p || !%{$p}) {
print $form->header( -charset => "utf8" );
#print `pwd`;
print 'This is perl, my name is Satan666 :)';
exit;
}
my @a = qw (cid date obj name fam phone age addr project edu more icq status b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20 b21 b22 b23 b24);
@a = map { $p->{$_} || '' } @a;
# print Dumper \@a;
# exit;
my $db_name = '';
# user from db
my $db_user = '';
my $db_pass = '';
#
my $db_type = 'mysql';
my $db_host = 'localhost';
my $prefix = ''; # prefix table...
my $web_home = "/home/files/";
my $dbh = DBI->connect(
"DBI:$db_type:database=$db_name;host=$db_host",
$db_user, $db_pass,
{
RaiseError => 1,
PrintError => 1
}
) || die $DBI::errstr;
$dbh->do('INSERT INTO '.$prefix.'_base (cid,date,obj,name,fam,phone,age,addr,project,edu,more,icq,status,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
', undef, @a );
my $id_db = $dbh->{mysql_insertid};
my $hash;
my @hash;
# 1..8 foto's
for (0..8) {
my $key = "foto".($_ == 0 ? "" : $_);
my $id_file = $_ == 0 ? 1 : ($_+1);
if ( my $UPLOAD_FH = $form->param($key) ) {
uploadfile($UPLOAD_FH,$id_db, $id_file );
$hash->{$key} = '/file/'.$id_db.'_'.$id_file.'.jpg';
}
}
# print Dumper $hash;
$dbh->do('UPDATE '.$prefix.'_base SET '.( join ", ", map { $_ .' = ? ' } keys %$hash ).' WHERE id='.$id_db.' LIMIT 1', undef, values %$hash ) if ($hash && %$hash);
##this is the only way to send msg back to the client
## print "<script>parent.callback('upload file success')</script>";
sub uploadfile {
my ($UPLOAD_FH,$id_last, $id_name) = @_;
my $newfilename = $web_home."or_".$id_last."_".$id_name.".jpg";
# umask 0000; #This is needed to ensure permission in new file
open (IMG, ">$newfilename"); binmode IMG; print IMG while (<$UPLOAD_FH>); close (IMG); chmod 0644, $newfilename;
image_thumbnail('100', '100', $newfilename, $web_home."".$id_last."_".$id_name.".jpg");
};
sub image_thumbnail {
my ($ix, $iy, $file_name, $file_name_out) = @_;
my $photo = Image::Magick->new;
$photo->Read($file_name);
my ($ox, $oy, $oc, $ic, $nx, $ny, $geo);
($ox,$oy)=$photo->Get('columns','height');
if (($ox > $ix)||($oy > $iy)) {
$oc = $ox/$oy; $ic = $ix/$iy;
if ($oc < $ic) {$ny = $iy; $nx=int(($ox/$oy)*$iy);}
elsif ($oc > $ic) {$nx = $ix; $ny=int(($oy/$ox)*$ix);}
else {$nx = $ix; $ny = $iy;}}
else {$nx=$ox;$ny=$oy;}
$geo = 'geometry';
$photo->Resize(geometry=>$geo, width=>$nx, height=>$ny);
$photo->Write($file_name_out);
}
$dbh->disconnect();
# redirect:
print $form->redirect( -uri => 'site.com', -status => 301 );
exit;
$dbh->do('UPDATE '.$prefix.'_base SET '.( join ", ", map { $_ .' = ? ' } keys %$hash ).' WHERE id='.$id_db.' LIMIT 1', undef, values %$hash ) if ($hash && %$hash);
grep="/usr/bin/grep"
awk="/usr/bin/awk"
uniq="/usr/bin/uniq"
ftpguard="/etc/ftpguard.pf"
table="ftpguard"
pfctl="/sbin/pfctl"
if [[ -z $1 ]];then
echo "Usage: grep_ip_from_file <file_name>"
else
$grep "\[ERROR\]\ Too\ many\ authentication\ failures" $1 | $awk '{print $6}' | $grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'| $uniq | while read IP
do
for i in $IP;
do
if [[ $i != `$grep $i $ftpguard` ]];
then
echo $i >> $ftpguard
$pfctl -t $table -T add $i
fi
done
done
fi
table <ftpguard> persist file "/etc/ftpguard.pf"
[...]
block in quick on $ext_if proto tcp from <ftpguard> to any port { 21, other ftp related ports } label "ftp bruteforce"
-rw------- 1 root wheel 264 Sep 6 12:19 /etc/ftpguard.pf
*/10 * * * * root /path to a folder/ftpguard.sh /var/log/messages &> /dev/null
#!/bin/sh
#===============================================================================
#
# FILE: pmm
#
# USAGE: pmm
#
# DESCRIPTION: A menu driven Shell script for ports management
#
# OPTIONS: None
# REQUIREMENTS: /bin/sh, /usr/sbin/pkg_version, /usr/local/bin/portmaster
# BUGS: ---
# NOTES: ---
# AUTHOR: $Author: rbelk $
# COMPANY: OnlyBSD
# VERSION: $Header: /root/bin/RCS/pmm,v 1.4 2010/11/14 03:35:36 rbelk Exp $
# CREATED: $Date: 2010/11/14 03:35:36 $
# REVISION: $Revision: 1.4 $
# LOG: $Log: pmm,v $
# LOG: Revision 1.4 2010/11/14 03:35:36 rbelk
# LOG: added the pkg_version requirement
# LOG:
# LOG: Revision 1.3 2010/11/14 03:33:26 rbelk
# LOG: cleaned up the comments
# LOG:
# LOG: Revision 1.2 2010/11/14 03:30:19 rbelk
# LOG: Update the RCS comments section
# LOG:
#===============================================================================
while :
do
clear
echo "P O R T S - M A I N T I A N C E - M E N U"
echo ""
echo "NOTE: You must first do the following steps for PMM to run correctly"
echo "- Install the ports tree with the command /usr/sbin/portsnap fetch extract"
echo "- Install portmaster: cd /usr/ports/ports-mgmt/portmaster; make install clean"
echo "- Add the next line to roots crontab"
echo " 0 1 * * * /usr/sbin/portsnap cron"
echo ""
echo "1. Update the ports tree"
echo "2. List ports that need to be upgraded"
echo "3 Update the installed ports"
echo "4. Cross-check and update dependency information for all ports"
echo "5. Delete stale distfiles of ports not installed anymore"
echo "6. Delete stale packages in the package directory"
echo "7. Delete stale ports that used to be depended on"
echo "8. Delete stale entries in /var/db/ports"
echo ""
echo "Q - Quit"
echo ""
echo -n "Please enter option [1 - 8, Q] "
read opt
case $opt in
1) echo "- Updating the ports directory";
old_time=`ls -lt /usr/ports/UPDATING | awk '{print $6" "$7" "$8}'`
/usr/sbin/portsnap update
new_time=`ls -lt /usr/ports/UPDATING | awk '{print $6" "$7" "$8}'`
if [ "$old_time" != "$new_time" ]
then
echo ">>>>>> A T T E N T I O N ---------------------------------------------------"
echo " /usr/ports/UPDATING has Changed"
echo " PLEASE READ BEFORE CONTINUING"
echo " You might have an installed port that needs attention"
echo " When you are sure everything is OK, start PMM again and proceded to step 2"
echo ">>>>>> A T T E N T I O N ---------------------------------------------------"
exit 1;
fi
echo ""
echo ">>>> Your Next Option is '2' <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
2) echo "- Listing of ports that need to be upgraded";
/usr/sbin/pkg_version -o -I -L= | awk '{print $1}'
echo ""
echo '>>>> Your Next Option is "3" <<<<';
echo "Press [enter] key to continue. . .";
read enterKey;;
3) echo "- Updating the installed ports";
# /root/bin/update_ports
/usr/local/sbin/portmaster -a
echo ""
echo ">>>> Your Next Option is "4" <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
4) echo "- Cross-checking and updating dependency information for all ports";
/usr/local/sbin/portmaster --check-depends
echo ""
echo ">>>> Your Next Option is "5" <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
5) echo "- Deleting stale distfiles of ports not installed anymore";
/usr/local/sbin/portmaster --clean-distfiles
echo ""
echo ">>>> Your Next Option is "6" <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
6) echo "- Deleting stale packages in the package directory";
/usr/local/sbin/portmaster --clean-packages
echo ""
echo ">>>> Your Next Option is "7" <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
7) echo "- Deleting stale ports that used to be depended on";
/usr/local/sbin/portmaster -s
echo ""
echo ">>>> Your Next Option is "8" <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
8) echo "- Deleting stale entries in /var/db/ports";
/usr/local/sbin/portmaster --check-port-dbdir
echo ""
echo ">>>> Your ports tree should be updated <<<<";
echo "Press [enter] key to continue. . .";
read enterKey;;
Q) echo "Bye $USER";
exit 1;;
*) echo "$opt is an invaild option. Please select option between 1-8, or Q only";
echo "Press [enter] key to continue. . .";
read enterKey;;
esac
done
diff(1) between old and new UPDATING instead of ATTENTION
add addtional options like
consistency, use name 'ports' or 'packages' everywhere instead of mixing, example:GENERAL)