<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abdullah</title>
    <description>The latest articles on DEV Community by Abdullah (@abdullahkhan89).</description>
    <link>https://dev.to/abdullahkhan89</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3239199%2F5524c4fb-aef9-4f6e-8b4b-807b6fa22239.png</url>
      <title>DEV Community: Abdullah</title>
      <link>https://dev.to/abdullahkhan89</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abdullahkhan89"/>
    <language>en</language>
    <item>
      <title>File transfer from source to destinatio</title>
      <dc:creator>Abdullah</dc:creator>
      <pubDate>Wed, 25 Jun 2025 05:12:57 +0000</pubDate>
      <link>https://dev.to/abdullahkhan89/file-transfer-from-source-to-destinatio-316a</link>
      <guid>https://dev.to/abdullahkhan89/file-transfer-from-source-to-destinatio-316a</guid>
      <description>&lt;h6&gt;
  
  
  ######################## SCRIPT START
&lt;/h6&gt;

&lt;p&gt;[oracle@hbrtl filterFiles]$ cat /zfssa/dumps/LocalToDPCFTP/File_tranfer_dpcftp.sh&lt;/p&gt;

&lt;p&gt;cd /zfssa/dumps/Losfile   ///Path where file will generate//&lt;/p&gt;

&lt;p&gt;for FILE in $(ls -lt --time=ctime | head -n 2)   &lt;/p&gt;

&lt;p&gt;do&lt;br&gt;
    cp ${FILE} /zfssa/dumps/filterFiles   //Move current file to another folder//&lt;br&gt;
done&lt;/p&gt;

&lt;p&gt;////Actual code transfer the file//&lt;br&gt;
curl --insecure --user USER:pass@123 -T //zfssa/dumps/filterFiles/*.csv sftp://dpcf.hostname.com:/FILES/&lt;br&gt;
//////////END////&lt;/p&gt;

&lt;p&gt;cd /zfssa/dumps/filterFiles&lt;/p&gt;

&lt;p&gt;rm -rf *.csv&lt;/p&gt;

&lt;h6&gt;
  
  
  ##################SCRIPT END
&lt;/h6&gt;

&lt;h6&gt;
  
  
  ##############SCRIPT START
&lt;/h6&gt;

&lt;p&gt;[oracle@hbnedm01 scripts]$ cat FileTrans.sh&lt;br&gt;
SOURCE_DIR="/zfssa/Staging/LosFile"&lt;br&gt;
DEST_USER="USERNAME"&lt;br&gt;
DEST_HOST="hostname.com"&lt;/p&gt;

&lt;h1&gt;
  
  
  DEST_DIR="/FILES"
&lt;/h1&gt;

&lt;p&gt;DEST_DIR="/BTG/LOS_PERF/FILES"&lt;/p&gt;

&lt;h2&gt;
  
  
  DEST_DIR="/FILES"
&lt;/h2&gt;

&lt;p&gt;DEST_PASSWORD="PASSWORD"&lt;/p&gt;

&lt;h1&gt;
  
  
  Check if SSH key-based authentication is set up
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ssh -q -o BatchMode=yes $DEST_USER@$DEST_HOST exit
&lt;/h1&gt;

&lt;h1&gt;
  
  
  if [ $? -ne 0 ]; then
&lt;/h1&gt;

&lt;h1&gt;
  
  
  echo "Error: SSH key-based authentication not set up for $DEST_USER@$DEST_HOST"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  echo "Run: ssh-copy-id -i ~/.ssh/id_rsa.pub $DEST_USER@$DEST_HOST"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  exit 1
&lt;/h1&gt;

&lt;h1&gt;
  
  
  fi
&lt;/h1&gt;

&lt;p&gt;LATEST_FILE=$(find "$SOURCE_DIR" -maxdepth 1 -type f -printf "%T@ %p\n" | sort -nr | head -n 1 | cut -d' ' -f2-)&lt;/p&gt;

&lt;h1&gt;
  
  
  LATEST_FILE=$(ls -t "$SOURCE_DIR" | head -n 1)
&lt;/h1&gt;

&lt;p&gt;if [ -z "$LATEST_FILE" ]; then&lt;br&gt;
echo "Error: No files found in $SOURCE_DIR"&lt;br&gt;
exit 1&lt;br&gt;
fi&lt;/p&gt;

&lt;h2&gt;
  
  
  use expect to handle password
&lt;/h2&gt;

&lt;p&gt;/usr/bin/expect &amp;lt;&amp;lt; EOF&lt;br&gt;
spawn scp "$LATEST_FILE" "$DEST_USER@$DEST_HOST:$DEST_DIR"&lt;/p&gt;

&lt;h1&gt;
  
  
  spawn sshpass -p "password@123"  scp "$LATEST_FILE" "$DEST_USER@$DEST_HOST:$DEST_DIR"
&lt;/h1&gt;

&lt;p&gt;expect "password:"&lt;br&gt;
send "$DEST_PASSWORD\r"&lt;br&gt;
expect off&lt;br&gt;
EOF&lt;br&gt;
if [ $? -eq 0 ]; then&lt;br&gt;
echo "Successfully copied $LATEST_FILE to $DEST_HOST:$DEST_DIR"&lt;br&gt;
else&lt;br&gt;
echo "Error: Failed to copy $LATEST_FILE"&lt;br&gt;
exit 1&lt;br&gt;
fi&lt;/p&gt;

&lt;h6&gt;
  
  
  ################## SCRIPT END
&lt;/h6&gt;

</description>
    </item>
    <item>
      <title>Shell Script to generate csv file.</title>
      <dc:creator>Abdullah</dc:creator>
      <pubDate>Mon, 02 Jun 2025 13:18:10 +0000</pubDate>
      <link>https://dev.to/abdullahkhan89/script-2133</link>
      <guid>https://dev.to/abdullahkhan89/script-2133</guid>
      <description>&lt;h6&gt;
  
  
  ##########################Single TABLE START
&lt;/h6&gt;

&lt;h1&gt;
  
  
  !/bin/bash
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Set Oracle environment variables (modify as per your Oracle installation)
&lt;/h1&gt;

&lt;p&gt;export ORACLE_BASE=/u02/app/oracle/&lt;br&gt;
export ORACLE_HOME=/u02/app/oracle/product/19.3.0/dbhome&lt;br&gt;
export PATH=$ORACLE_HOME/bin:$PATH&lt;br&gt;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH&lt;br&gt;
export ORACLE_SID=DB_NAME&lt;/p&gt;

&lt;h1&gt;
  
  
  Database connection details
&lt;/h1&gt;

&lt;h1&gt;
  
  
  DB_USER="your_username"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  DB_PASSWORD="your_password"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  DB_SID="your_sid"
&lt;/h1&gt;

&lt;p&gt;DB_SID="DB_NAME"&lt;/p&gt;

&lt;h1&gt;
  
  
  Get current date and time  for filename (format: YYYYMMDD)
&lt;/h1&gt;

&lt;p&gt;CURRENT_DATE=$(date +%Y%m%d%H%M)&lt;br&gt;
OUTPUT_FILE="output_${CURRENT_DATE}.csv"&lt;br&gt;
TEMP_HEADER_FILE="temp_header_${CURRENT_DATE}.csv"&lt;br&gt;
TEMP_DATA_FILE="temp_data_${CURRENT_DATE}.csv"&lt;br&gt;
TEMP_FILTERED_DATA_FILE="temp_filtered_data_${CURRENT_DATE}.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  SQL query to fetch column names as headers
&lt;/h1&gt;

&lt;p&gt;HEADER_QUERY="&lt;br&gt;
SET HEADING OFF&lt;br&gt;
SET FEEDBACK OFF&lt;br&gt;
SET PAGESIZE 0&lt;br&gt;
SET LINESIZE 32767&lt;br&gt;
SET TRIMSPOOL ON&lt;br&gt;
SPOOL $TEMP_HEADER_FILE&lt;br&gt;
SELECT LISTAGG(column_name, ',') WITHIN GROUP (ORDER BY column_id) FROM DBA_tab_columns WHERE table_name in ('Z','Y','x') and owner='temp';&lt;br&gt;
SPOOL OFF&lt;br&gt;
EXIT;&lt;br&gt;
"&lt;/p&gt;

&lt;h1&gt;
  
  
  SQL query to fetch data with filtering
&lt;/h1&gt;

&lt;p&gt;DATA_QUERY="&lt;br&gt;
SET HEADING OFF&lt;br&gt;
SET FEEDBACK OFF&lt;br&gt;
SET PAGESIZE 0&lt;br&gt;
SET LINESIZE 32767&lt;br&gt;
SET TRIMSPOOL ON&lt;br&gt;
SET COLSEP ','&lt;br&gt;
SPOOL $TEMP_DATA_FILE&lt;br&gt;
SELECT * from table_name&lt;br&gt;
SPOOL OFF&lt;br&gt;
EXIT;&lt;br&gt;
"&lt;/p&gt;

&lt;h1&gt;
  
  
  Execute query to fetch headers
&lt;/h1&gt;

&lt;h1&gt;
  
  
  echo "$HEADER_QUERY" | sqlplus -s $DB_USER/$DB_PASSWORD@$DB_SID
&lt;/h1&gt;

&lt;p&gt;echo "$HEADER_QUERY" | sqlplus "/ as sysdba"&lt;/p&gt;

&lt;h1&gt;
  
  
  Execute query to fetch data
&lt;/h1&gt;

&lt;h1&gt;
  
  
  echo "$DATA_QUERY" | sqlplus -s $DB_USER/$DB_PASSWORD@$DB_SID
&lt;/h1&gt;

&lt;p&gt;echo "$DATA_QUERY" | sqlplus "/ as sysdba"&lt;/p&gt;

&lt;h1&gt;
  
  
  Merge header and data files into final CSV
&lt;/h1&gt;

&lt;p&gt;if [ -f "$TEMP_HEADER_FILE" ] &amp;amp;&amp;amp; [ -f "$TEMP_DATA_FILE" ]; then&lt;br&gt;
    cat "$TEMP_HEADER_FILE" "$TEMP_DATA_FILE" &amp;gt; "$TEMP_FILTERED_DATA_FILE"&lt;br&gt;
    echo "CSV file generated successfully: $TEMP_FILTERED_DATA_FILE"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Clean up temporary files
rm "$TEMP_HEADER_FILE" "$TEMP_DATA_FILE"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;else&lt;br&gt;
    echo "Error: Failed to generate header or data file"&lt;br&gt;
    exit 1&lt;br&gt;
fi&lt;/p&gt;

&lt;h2&gt;
  
  
  Merge header and filtered data files into final CSV
&lt;/h2&gt;

&lt;h1&gt;
  
  
  if [ -f "$TEMP_HEADER_FILE" ] &amp;amp;&amp;amp; [ -f "$TEMP_FILTERED_DATA_FILE" ]; then
&lt;/h1&gt;

&lt;h1&gt;
  
  
  cat "$TEMP_HEADER_FILE" "$TEMP_FILTERED_DATA_FILE" &amp;gt; "$OUTPUT_FILE"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  echo "CSV file generated successfully: $OUTPUT_FILE"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  # Clean up temporary files
&lt;/h1&gt;

&lt;h1&gt;
  
  
  rm "$TEMP_HEADER_FILE" "$TEMP_DATA_FILE" "$TEMP_FILTERED_DATA_FILE"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  else
&lt;/h1&gt;

&lt;h1&gt;
  
  
  echo "Error: Failed to generate header or filtered data file"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  exit 1
&lt;/h1&gt;

&lt;h1&gt;
  
  
  fi
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Post-process to remove specific lines (e.g., lines 2 and 3)
&lt;/h1&gt;

&lt;p&gt;if [ -f "$TEMP_FILTERED_DATA_FILE" ]; then&lt;br&gt;
    sed '/^SQL/d' "$TEMP_FILTERED_DATA_FILE" &amp;gt; "$OUTPUT_FILE"&lt;br&gt;
    echo "CSV file generated successfully: $OUTPUT_FILE"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Clean up temporary files
rm "$TEMP_FILTERED_DATA_FILE"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;else&lt;br&gt;
    echo "Error: Data file not generated"&lt;br&gt;
    exit 1&lt;br&gt;
fi&lt;/p&gt;

&lt;h6&gt;
  
  
  ##################Single TABLE END
&lt;/h6&gt;

&lt;h6&gt;
  
  
  ##################Multiple TABLE Script  Start
&lt;/h6&gt;

&lt;p&gt;!/bin/bash&lt;br&gt;
export ORACLE_BASE=/u02/app/oracle/&lt;br&gt;
export ORACLE_HOME=/u02/app/oracle/product/19.3.0/dbhome&lt;br&gt;
export PATH=$ORACLE_HOME/bin:$PATH&lt;br&gt;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH&lt;br&gt;
export ORACLE_SID=DB_name&lt;/p&gt;

&lt;h1&gt;
  
  
  Get current date and time for filename
&lt;/h1&gt;

&lt;p&gt;CURRENT_DATE=$(date +%Y%m%d%H%M)&lt;br&gt;
OUTPUT_FILE="output_${CURRENT_DATE}.csv"&lt;br&gt;
FILE_PATH="/zfssa/PATH"&lt;br&gt;
FINAL_OUTPUT_FILE="${FILE_PATH}/XNS_DUMP_PERFIOS_SME_${CURRENT_DATE}.csv"&lt;br&gt;
TEMP_DATA_FILE="temp_data_${CURRENT_DATE}.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  SQL query to fetch data with headers
&lt;/h1&gt;

&lt;p&gt;SQL_QUERY=$(cat &amp;lt;&amp;lt; EOF&lt;br&gt;
SET PAGESIZE 0&lt;br&gt;
SET FEEDBACK OFF&lt;br&gt;
SET ECHO OFF&lt;br&gt;
SET HEADING ON&lt;br&gt;
SET LINESIZE 32767&lt;br&gt;
SET TRIMSPOOL ON&lt;br&gt;
SET MARKUP CSV ON DELIMITER ',' QUOTE ON&lt;br&gt;
SPOOL $TEMP_DATA_FILE&lt;br&gt;
SELECT * from tablename --Complete query in one line for multiple tables&lt;br&gt;
SPOOL OFF&lt;br&gt;
EXIT;&lt;br&gt;
EOF&lt;br&gt;
)&lt;/p&gt;

&lt;h1&gt;
  
  
  Execute the query and write to a temporary file
&lt;/h1&gt;

&lt;p&gt;echo "$SQL_QUERY" | sqlplus "/ as sysdba"&lt;/p&gt;

&lt;h1&gt;
  
  
  Clean up the output: remove extra spaces, ensure proper CSV format
&lt;/h1&gt;

&lt;p&gt;if [ -f "$TEMP_DATA_FILE" ]; then&lt;/p&gt;

&lt;h4&gt;
  
  
  WORKING
&lt;/h4&gt;

&lt;p&gt;sed 's/ &lt;em&gt;, */,/g' "$TEMP_DATA_FILE" | sed 's/ *"([^"]&lt;/em&gt;)" */"\1"/g' &amp;gt; "$OUTPUT_FILE"&lt;br&gt;
sed '/^SQL/d' "$TEMP_DATA_FILE" &amp;gt; "$OUTPUT_FILE"&lt;br&gt;
sed '/^$/d' "$OUTPUT_FILE" &amp;gt; "$FINAL_OUTPUT_FILE"&lt;/p&gt;

&lt;h1&gt;
  
  
  sed 's/ &lt;em&gt;, */,/g' "$TEMP_DATA_FILE" | sed 's/ *"([^"]&lt;/em&gt;)" */"\1"/g'  &amp;gt; "$OUTPUT_FILE"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  sed '/[Ss][Qq][Ll]/d' | sed '/^SQL/d' "$TEMP_DATA_FILE"  &amp;gt; "$OUTPUT_FILE"
&lt;/h1&gt;

&lt;h1&gt;
  
  
  sed 's/ *, */,/g' "$TEMP_DATA_FILE" |\
&lt;/h1&gt;

&lt;h1&gt;
  
  
  sed 's/ &lt;em&gt;"([^"]&lt;/em&gt;)" */"\1"/g' &amp;gt; " |\
&lt;/h1&gt;

&lt;h1&gt;
  
  
  sed '/^$/d' |
&lt;/h1&gt;

&lt;h1&gt;
  
  
  sed '/[Ss][Qq][Ll]/d' |
&lt;/h1&gt;

&lt;h1&gt;
  
  
  sed '/^SQL/d' "$TEMP_DATA_FILE" &amp;gt; "$OUTPUT_FILE"
&lt;/h1&gt;

&lt;p&gt;echo "CSV file generated successfully: $OUTPUT_FILE"&lt;br&gt;
else&lt;br&gt;
echo "Error: Data file not generated"&lt;br&gt;
exit 1&lt;br&gt;
fi&lt;/p&gt;

&lt;h1&gt;
  
  
  Clean up temporary files
&lt;/h1&gt;

&lt;p&gt;rm "$TEMP_DATA_FILE"&lt;/p&gt;

&lt;h6&gt;
  
  
  ###############Multiple tables script End
&lt;/h6&gt;

</description>
    </item>
  </channel>
</rss>
