আমি কয়েক বছরের সাথে যুক্ত হয়েছি এমন কিছু ডিডি কৌশলগুলি এখানে রয়েছে ...
বন্ধুত্বপূর্ণ tty বা অ-ইন্টারেক্টিভ মোড ব্যাশে কাটা এবং আটকান
আপনি যদি EF / ^ D / ^ F সনাক্ত না করে এমন অবস্থায় থাকেন তবে আপনি কোনও হোস্টে টেক্সট ফাইলগুলি স্থানান্তর করতে ডিডি ব্যবহার করতে পারেন। যেহেতু এটি স্বয়ংক্রিয়ভাবে নির্দিষ্ট পরিমাণ বাইটের পরে পড়া বন্ধ করবে।
আমি এটি গত বছরের মতো সম্প্রতি একটি সুরক্ষা মহড়ার সময় ব্যবহার করেছি যেখানে আমরা একটি রিমোট হোস্টে নন-টিটি শেল পেতে সক্ষম হয়েছি এবং ফাইলগুলিতে স্থানান্তর করার প্রয়োজন ছিল।
বাস্তবে, এমনকি আমি বেস 64 কে এনকোড করে এবং একটি ধীর, তবে নির্ভরযোগ্য খাঁটি-ব্যাশ বেস 64 ডিকোডিং স্ক্রিপ্ট ব্যবহার করে কয়েক বাইনারি ফাইল করেছিলাম।
dd of=textfile.txt bs=1 count=<size_of_data_in_paste_buffer>
একটি দুর্দান্ত শীতল কৌশলটি হ'ল ডিডি চলার সময়, আপনি যদি এটি ইউএসআর 1 সিগন্যাল প্রেরণ করেন তবে এটি বর্তমান অবস্থা নির্গত করবে (প্রতি সেকেন্ডে বাইটস পড়বে, বাইটস পড়বে))
ইউনিভার্সাল থ্রুপুট স্থিতি ফিল্টার
আমি stdout মাধ্যমে ডেটা নির্গত যে কোনও প্রোগ্রামের জন্য খাঁটি বাশ অগ্রগতি ফিল্টার হিসাবে কাজ করার জন্য এটি লিখেছিলাম। (দ্রষ্টব্য: স্ট্যান্ডআউটের মাধ্যমে বেশ কিছু খুব সহজেই ডেটা নিঃসরণ করবে - এমন প্রোগ্রামগুলির জন্য যা তারা ফাইল নাম হিসাবে / dev / stdout ব্যবহার করে আপনার উপর বাধা না দেয় তবে আপনি প্রতারণা করতে পারেন But তবে ধারণাটি মূলত, প্রতিবার এক্স পাওয়ার সাথে সাথে বাইটের পরিমাণ, মুদ্রণের হ্যাশ চিহ্নগুলি (পুরানো স্কুল এফটিপির মতো যখন আপনি হ্যাশ মোড চালু করেছিলেন)
(দ্রষ্টব্য) অগ্রগতি ফাইল জিনিসটি খোঁড়া, এটি বেশিরভাগই ধারণার প্রমাণ ছিল। আমি যদি এটি পুনরায় redd করি তবে আমি কেবল একটি ভেরিয়েবল ব্যবহার করব।
dd bs=$BLKSZ of=${TMPFILE} 2>&1 \
| grep --line-buffered -E '[[:digit:]]* bytes' \
| awk '{ print $1 }' >> ${PROGRESS} &
while [[ $(pidof dd) -gt 1 ]]; do
# PROTIP: You can sleep partial seconds
sleep .5
# Force dd to update us on it's progress (which gets
# redirected to $PROGRESS file.
pkill -USR1 dd
local BYTES_THIS_CYCLE=$(tail -1 $PROGRESS)
local XFER_BLKS=$(((BYTES_THIS_CYCLE-BYTES_LAST_CYCLE)/BLKSZ))
if [ $XFER_BLKS -gt 0 ]; then
printf "#%0.s" $(seq 0 $XFER_BLKS)
BYTES_LAST_CYCLE=$BYTES_THIS_CYCLE
fi
done
অনামী শেল ফাইলহ্যান্ডলগুলি ব্যবহার করে স্লাইস এবং ডাইস ফাইল
আংশিক ফাইলের ডেটা সংরক্ষণ করার জন্য কোনও টিএমপি ফাইল ব্যবহার না করে - আপনি কীভাবে কোনও অজ্ঞাতনামা ফাইলহ্যান্ডেলের মাধ্যমে ট্যার ইনপুট সরবরাহ করে ত্রুটি ছাড়াই নিষ্ক্রিয় করতে পারেন এমন একটি স্বাক্ষরযুক্ত টার ফাইল থাকতে পারে তার একটি অত্যন্ত সিউডো কোড উদাহরণ।
generate_hash() {
echo "yay!"
}
# Create a tar file, generate a hash, append it to the end
tar -cf log.tar /var/log/* 2>/dev/null
TARFILE_SIZE=$(stat -f "%z" log.tar)
SIGNATURE=$(generate_hash log.tar)
echo $SIGNATURE >>log.tar
# Then, later, extract without getting an error..
tar xvf <(dd if=$OLDPWD/log.tar bs=1 count=${TARFILE_SIZE})
Tl; dr হ'ল: আমি ডিডিটিকে অবিশ্বাস্যভাবে দরকারী বলে মনে করি। এবং এগুলি কেবলমাত্র তিনটি উদাহরণ যা আমি আমার মাথার উপরের অংশটিকে ভাবতে পারি।