स्क्रिप्ट को डिबग मोड में चलाने के दौरान सुनिश्चित करें कि एनवी चर प्रदर्शित नहीं किया जाएगा


1
[yesh]$ env | grep password
password=hello

-> tsts मेरी स्क्रिप्ट है जो env वेरिएबल पासवर्ड का उपयोग करती है।

[yesh]$ grep password tsts

export DB_PWD="$password"

-> यह मेरी स्क्रिप्ट डिबग मोड में चल रही है

[yesh]$ sh -x tsts

+ export DB_DD=yesh
+ DB_DD=yesh
+ export DB_USER=user
+ DB_USER=user
+ export DB_PWD=hello
+ DB_PWD=hello
+ echo 'sqlplus '\''user/hello@yesh'\'''

sqlplus 'user/hello@yesh'

डिबग मोड में स्क्रिप्ट चलाने के दौरान मैं क्या कर सकता हूं ताकि पासवर्ड प्रदर्शित न हो?


4
कुछ भी तो नहीं। यहां तक ​​कि अगर स्क्रिप्ट डिबग मोड में नहीं चलती है, तो कोई भी catइसे स्रोत कोड में देख सकता है।
पर्ल

मेरा मतलब है कि क्या बदलाव किए जाने की जरूरत है ताकि DB_PWD = हैलो प्रदर्शित न हो जो मेरा env वेरिएबल है
Yeswanth

नीचे मेरा जवाब देखें।
पर्ल

जवाबों:


1

आपको वर्तमान डिबग सेटिंग की जांच करने और याद रखने की आवश्यकता है, अर्थात -xजब स्क्रिप्ट चलती है तो विकल्प प्रभावी होता है या नहीं। फिर आपको प्रत्येक कथन को घेरने की ज़रूरत है जिसे आप set +x विकल्प को बंद करने के लिए प्रिंट नहीं करना चाहते हैं और set -xजब यह शुरू में सेट किया गया था, तो इसे वापस चालू करें। चर $-में वे विकल्प होते हैं जो स्क्रिप्ट के चलने पर प्रभावी होते हैं।

#!/usr/bin/env bash

export DB_DD=yesh
export DB_USER=user

# check and remember current setting of "-x":
if echo $- | grep -q x; then 
    is_debug=1
else
    is_debug=0
fi

[ $is_debug -eq 1 ] && set +x   # temporarily disable "-x"
export DB_PWD=hello             # won't be printed
[ $is_debug -eq 1 ] && set -x   # again enable "-x"

echo 'sqlplus '\''user/hello@yesh'\'''
exit 0;

का आउटपुट sh -x tsts:

+ export DB_DD=yesh
+ export DB_USER=user
+ echo x
+ grep -q x
+ is_debug=1
+ [ 1 -eq 1 ]
+ set +x
+ echo sqlplus 'user/hello@yesh'
sqlplus 'user/hello@yesh'
+ exit 0

लेकिन ध्यान रखें कि यह व्यर्थ है क्योंकि हर कोई जो आपकी स्क्रिप्ट को चला सकता है, वह भी इसमें देख सकता है और वहां पासवर्ड देख सकता है।


अपने प्रयासों के लिए tq। मेरे लिए यह बहुत महत्वपूर्ण है :) लेकिन क्या होगा अगर मैं स्क्रिप्ट में कोई बदलाव नहीं कर सकता हूं और क्या मैं किसी भी कमांड को sh -x में जोड़ सकता हूं ताकि पासवर्ड बंद न हो जाए ??
यशवंत

2
@yeswanth No. स्क्रिप्ट को बदले बिना डिबगिंग आउटपुट को दबाने के लिए संभव नहीं है जब इसे साथ चलाया जाता है -x
पर्ल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.