# DCU IP Update Tool Aplikasi ini digunakan untuk memperbarui IP pada perangkat Data Concentrator Unit (DCU) melalui antarmuka web dengan menggunakan Selenium, dan mengelola koneksi SSH untuk menghubungkan ke perangkat DCU. ## Fitur Utama - **Perbarui IP DCU**: Mengubah IP pada perangkat DCU melalui browser web menggunakan Selenium. - **SSH Tunnel**: Menggunakan koneksi SSH untuk mengakses perangkat DCU secara remote. - **Antarmuka Web**: Dibangun dengan Node.js untuk mengelola proses update dan menampilkan data hasil update. - **Kontrol Proses**: Menyediakan kontrol mulai dan berhenti untuk proses update, serta pemantauan status proses secara real-time. ## Struktur Direktori ``` /project-root ├── /bin/ # Virtual environment ├── /update_dcu_by_nodejs.py # Skrip Python untuk update DCU IP ├── /nodejs_app/ # Aplikasi Node.js untuk menjalankan dan mengelola proses ├── /public/ # HTML, CSS, dan file statis ├── /routes/ # Routing untuk API Node.js ├── app.js # Server utama aplikasi Node.js └── package.json # Dependencies untuk Node.js ``` ## Prasyarat 1. **Python 3.x**: Pastikan Python 3.x sudah terinstal di sistem Anda. 2. **Node.js & npm**: Pastikan Node.js dan npm sudah terinstal untuk menjalankan aplikasi web. 3. **Google Chrome**: Diperlukan untuk Selenium WebDriver, pastikan Chrome sudah terinstal. 4. **ChromeDriver**: Unduh dan sesuaikan path ke ChromeDriver untuk versi Chrome Anda. 5. **Virtual Environment (Opsional)**: Anda dapat membuat dan mengaktifkan virtual environment untuk Python. 6. **Update informasi username dan Password SSH dan Web HES **: Anda dapat membuat dan mengaktifkan virtual environment untuk Python. ### Instalasi #### 1. Instalasi Python Dependencies Buat dan aktifkan virtual environment (opsional) untuk mengisolasi dependensi Python: ```bash python3 -m venv venv source venv/bin/activate # untuk Mac/Linux venv\Scripts\activate # untuk Windows ``` Instal dependensi Python yang diperlukan: ```bash pip install -r requirements.txt ``` #### 2. Instalasi Node.js Dependencies Masuk ke folder `nodejs_app` dan instal dependensi Node.js: ```bash cd HES_Selenium npm install ``` ## Penggunaan ### Menjalankan Aplikasi Web Aplikasi web dijalankan menggunakan Node.js dan bertanggung jawab untuk menerima permintaan dari frontend, menjalankan proses Python, dan mengontrol proses update IP DCU. 1. Jalankan server Node.js dengan perintah berikut: ```bash cd HES_Selenium node app.js ``` 2. Aplikasi web akan tersedia di `http://localhost:3000`. ### Menjalankan Proses Update DCU IP - Ketika Anda mengklik tombol **Start**, aplikasi akan memulai proses update IP pada perangkat DCU menggunakan Python, Selenium, dan SSH. - Inputkan daftar IP yang ingin diperbarui di kolom yang disediakan. - Proses update akan berjalan dengan SSH Tunnel menghubungkan ke perangkat DCU dan menggunakan Selenium untuk berinteraksi dengan antarmuka web perangkat tersebut. - Setelah proses selesai, hasilnya akan ditampilkan dalam bentuk tabel yang memperlihatkan status update untuk setiap IP. #### Menghentikan Proses - Ketika Anda mengklik tombol **Stop**, aplikasi akan menampilkan konfirmasi untuk menghentikan proses yang sedang berjalan. - Jika proses berjalan, aplikasi akan mengirimkan perintah untuk menghentikan koneksi SSH dan menghentikan WebDriver (Selenium). ### Struktur dan Penjelasan Fungsi #### `update_dcu_by_nodejs.py` Skrip Python yang berfungsi untuk memperbarui IP pada perangkat DCU menggunakan Selenium dan SSH Tunnel. - **`update_dcu_ip(updated_log, ip_list, processing_log)`**: Fungsi utama untuk melakukan update IP pada perangkat DCU. - **`create_ssh_tunnel(dcu_ip, ssh_user, ssh_host, ssh_port, ssh_password, log_file)`**: Membuat koneksi SSH untuk mengakses perangkat DCU. - **`log_processing(message, log_file)`**: Fungsi untuk mencatat log proses. #### `app.js` (Node.js) Aplikasi Node.js yang mengelola endpoint HTTP untuk memulai dan menghentikan proses. - **`POST /run-script`**: Menjalankan skrip Python untuk memperbarui IP pada perangkat DCU. - **`POST /stop-script`**: Menghentikan proses yang berjalan, baik Selenium maupun SSH tunnel. (MASIH PERLU PENGEMBANGAN!!!) ### Menyimpan Hasil Proses Setelah proses update selesai, hasilnya akan disimpan dalam dua file log: - **`update_log.csv`**: Berisi hasil dari update IP yang sukses. - **`processing_log.txt`**: Berisi log rinci dari proses yang berjalan, termasuk kesalahan dan waktu pemrosesan. ## Debugging dan Masalah Umum - **Proses SSH tidak berhenti**: Jika SSH tunnel tidak berhasil dihentikan, pastikan Anda menggunakan metode `terminate()` atau `kill` yang tepat pada objek `pexpect.spawn`. Anda bisa menggunakan `psutil` untuk menghentikan proses dengan lebih handal. - **Selenium tidak bisa memuat halaman**: Pastikan ChromeDriver yang sesuai dengan versi Chrome Anda sudah terinstal dan path-nya sudah benar.